pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/devel/intellij-ue-bin



Module Name:    pkgsrc
Committed By:   schmonz
Date:           Fri Aug 15 18:10:46 UTC 2025

Modified Files:
        pkgsrc/devel/intellij-ue-bin: Makefile PLIST distinfo
        pkgsrc/devel/intellij-ue-bin/patches: patch-bin_idea.sh

Log Message:
intellij-ue-bin: update to 2025.2. Changes:

- Everything in today's intellij-ce-bin update, plus:

### Updates in 2023.2

#### Features

 **Key updates**

  * **AI Assistant [Limited access]** - With the current starting set
    of AI-powered features, AI Assistant offers integrated AI chat and
    can do things like automatically write documentation comments for
    you, suggest names, generate commit messages, and more.

  * **In-editor performance hints** - The new in-editor hints offer a
    quick way to analyze code performance line by line, helping you
    identify and resolve issues faster. Color-coded annotations in the
    editor's gutter highlight critical methods allowing you to focus
    right on the performance bottlenecks. This means you no longer have
    to perform a thorough, time-consuming analysis with the Flame Graph
    and Call Tree views.

  * **GitLab integration** - You can now work with the Merge Request
    functionality right from the IDE: review the list of requests, check
    the changes, leave comments, and navigate to relevant views.

**User experience**

  * **Text search in Search Everywhere** - Search Everywhere (Double
    Shift) is primarily used for searching through files, classes,
    methods, actions, and settings. With this update, it now includes
    text search capabilities similar to Find in Files. Now, text search
    results are displayed when there are few or no other search results
    available for a given query.

  * **Colored project headers in the new UI** - You can now assign a
    unique color and icon to each of your projects, making them easier
    to distinguish in your workspace. Headers now come with predefined
    colors by default, but you can customize them.

  * **Reworked hamburger menu in the main toolbar on Microsoft Windows
    and Linux** - The behavior of the hamburger menu that is located in
    the main toolbar in the new UI on Windows and Linux has been
    refined. Once you click on the menu icon, the elements now appear
    horizontally over the toolbar. Also, there's now an option to turn
    this menu into a separate toolbar, accessible via View | Appearance
    | Main menu as a Separate Toolbar.

  * **File sorting by modification time in the Project view** - Added
    the ability to arrange your files in the Project view based on their
    modification times. This new functionality automatically reorders
    the files whenever the changes in your project are saved.

  * **Light theme with light header in the new UI** - The user
    experience with the Light theme has been refined by introducing the
    alternate Light with Light Header option, featuring matching light
    colors for window headers, tooltips, and notification balloons.

  * **Updated window controls on Apple macOS** - When working on
    macOS in full screen mode using the new UI, the window controls
    are now displayed right in the main toolbar - not in the floating
    bar as before.

  * **Removed title bar on Linux in the new UI** - For the convenience
    of Linux users, the native header of the operating system has been
    removed in the new UI, resulting in a cleaner interface. By default,
    you will now see the custom IDE header, which offers a range of
    customization options to tailor your workspace.

  * **Syntax highlighting in inspection descriptions** - Syntax
    highlighting makes it easier to understand what triggers an
    inspection and decide whether you want it to be active or inactive.

  * **Single-click navigation between project directories** - In the
    Project view, there's a new Open Directories with Single Click
    option that makes expanding and collapsing the project folders
    quicker and more responsive. The option is available from the drop-
    down menu once you click on the kebab (three vertical dots) menu.

  * **Improved main toolbar customization** - The customization
    options for the new UI's main toolbar have been expanded. You can
    now use a dropdown menu to quickly choose actions that you want to
    add to the toolbar.

  * **Suggested plugins in Settings/Preferences** - To make it easier
    to configure the IDE for your specific projects and extend its
    functionality with plugins, the UI for the Settings/Preferences |
    Plugins section has been updated. It now includes a set of suggested
    plugins that is determined automatically based on your project
    specifics and appears at the top of the list.

  * **Updated UI for the Run/Debug widget in the Services tool window**
    - The UI for the running and debugging actions in the Services tool
    window has been reworked to make the look and feel of the toolbar
    consistent with that of the main Run/Debug widget.

  * **Pinned run configurations in the Run widget** - To make managing
    multiple run configurations easier, the option to pin preferred
    configurations in the Run widget has been implemented.

**Java**

  * **New inspections and other code analysis improvements** - Java
    inspections have been improved and expanded to help you maintain high-
    quality code and detect potential issues more effectively.

    * The new Incorrect 'MessageFormat' pattern inspection will warn
      you when pattern references do not match the arguments, and it
      will also detect incorrect usages of quotes and braces in
      MessageFormat patterns.

    * The IDE now reports calls with explicit ChronoField or ChronoUnit
      arguments and suggests replacing them with calls of more specific
      methods, thus simplifying the code.

  * **Сode highlighting and navigation for format strings** - Once you
    place the caret on a format specifier, the IDE will now highlight
    the corresponding argument and other specifiers that point to it.
    Also, you can now use Go To Declaration (Ctrl+B) to jump to the
    associated code location for a specific format string placeholder.

  * **Improved support for the @snippet tag in Javadoc comments** - It
    allows Markup comments within the @snippet tag and renders them
    properly in the documentation. Code regions are now supported,
    meaning you can specify a portion of code that you want to refer to
    in a Javadoc comment. In addition, the IDE now supports the
    inclusion of external snippets within the @snippet tag, allowing you
    to reference code snippets stored in separate files or sources and
    include them in Javadoc documentation.

  * **Expanded refactoring options for multiple selected members** -
    You can now invoke Extract Delegate, Extract Interface, Extract
    Superclass, Pull Members Up, and Push Members Down on multiple
    members simultaneously by selecting them right in the Project or
    Structure tool window. In addition, IntelliJ IDEA now supports multi-
    caret selection for an extended range of refactorings, including
    Encapsulate Fields, Move Static Members, Extract Delegate, Extract
    Interface, and Extract Superclass.

  * **Improved navigation for stack trace analysis** - To facilitate
    stack trace analysis and make resolving bugs quicker, IntelliJ IDEA
    can now accurately guess the location of a method in the report even
    when line numbers are not available or have diverged.

  * **Enhanced taint analysis for dynamic SQL queries** - IntelliJ IDEA
    can now better analyze concatenations and interpolations of SQL in
    Java and Kotlin, detecting potentially unsafe queries and thereby
    protecting the code from possible SQL injection vulnerabilities.

**Scala**

  * **Better Scala 3 support** - This release brings enhanced Scala 3
    support, with a focus on providing a streamlined development
    experience. Notable improvements include:

    * Fixes for Scala 3 enum highlighting, navigation to enum
      definitions, and the correct resolution of enum cases in
      various contexts.

    * The TASTy decompiler has been significantly enhanced, ensuring
      accurate decompilation of popular Scala libraries, such as Akka,
      Cats, Play, ZIO, and others.

    * The integration of scala-expression-compiler into the debugger
      provides a better debugging experience for Scala developers.

    * Enhanced completion hints for Scala 3's Universal Apply Methods,
      in-editor support for IArray.

    * Improved support for the "fewer braces" syntax.

  * **Better sbt support** - Environment variables set for sbt are
    persisted and handled correctly after the project is reopened. The
    settings page has been redesigned for easier use, and a new
    Environment variables field has been added so that you can now pass
    custom environment variables to the sbt-shell process.

  * **ScalaDoc rendering** - Annotations, keywords, and literals in
    displayed declarations are now highlighted based on the selected
    theme. The list of extended traits and classes has been split into
    multiple lines if it exceeds the available space. Additionally,
    Scala 3 keywords are now supported in the documentation.

  * **Fixed type inference errors** - This release comes with many
    fixes to invalid type inference in some complex or simply rare
    cases, such as when types have complicated bounds, when a sealed
    trait hierarchy might be unclear, or in complex pattern matching.

  * **Zinc as the default compiler** - In light of Zinc's recent
    performance improvements, it is now the default incremental compiler
    in this release. This ensures comprehensive support for incremental
    compilation of new Scala 3 features, including inline methods.

  * **Improved management of sources and target directories** - Sub-
    folders of the target folder are no longer included automatically as
    sources unless they are marked as managed. This speeds up searching
    in projects that generate source code. Also, the IDE now provides
    better support for sbt-projectmatrix.

**Profiler**

  * **Profiling features available from the Run tool window** - You can
    now conveniently access the IntelliJ Profiler's functionality right
    from the Run tool window. The new buttons allow you to invoke the
    Attach IntelliJ Profiler and Capture Memory Snapshot actions in a
    click, without having to open the Profiler tool window or start the
    application from scratch.

  * **Default wall-clock profiling mode** - The profiling experience in
    IntelliJ IDEA has been enhanced by making wall-clock profiling mode
    the default option. This profiling method considers the total time
    spent in a method, including waiting time. With milliseconds as the
    measurement unit, it takes center stage as the more powerful and
    intuitive option.

**Run / Debug**

  * **Reactor Mono and Flux values evaluation** - When debugging your
    reactive application, you can now easily evaluate values of watches
    and local variables for Mono and Flux types. The IDE now detects
    them during debugging sessions and provides a corresponding get or
    collectList link in the Variables view, which you can click to
    instantly compute reactive stream items. By default, the debugger
    fetches the first 100 items of Flux. You can configure this number
    in the settings.

  * **Сontinuous testing for Gradle, Maven, and JPS projects** - The
    capabilities of the auto-testing functionality have been expanded,
    making it fully compatible with the Maven, Gradle, and JPS build
    systems. It is now easier to activate continuous testing mode.

  * **Inline breakpoints for return statements** - IntelliJ IDEA now
    offers improved support for setting breakpoints directly at the
    return statement, similar to how it was already being done with
    lambda expressions. This improvement offers developers improved
    debugging precision and deeper code analysis, providing valuable
    insights into code behavior and return values.

**Version control systems**

  * **Option to commit specific lines of code** - This release
    introduces a new feature to selectively commit specific parts of
    code chunks. To perform a partial commit, select the lines within a
    chunk and call Include these lines into commit from the context
    menu. The chunk will be divided into individual lines, with the
    selected ones highlighted. You can add or exclude lines from the
    selection using checkboxes or the context menu.

**Performance**

  * **New tool for easily generating shared indexes** - It is designed
    to streamline teamwork and eliminate time wasted on locally indexing
    large projects. The new tool simplifies the process of generating
    shared indexes for your team, requiring just a few clicks instead of
    multiple scripts and services.

**Frameworks and technologies**

  * **Ability to run and debug Tomcat on Microsoft Windows Subsystem for
    Linux (WSL)** - To work with Tomcat-based applications on WSL,
    you'll need to have the JAVA_HOME environment variable declared in
    either the /etc/environment or the ~/.bashrc file.

  * **gRPC requests using TLS in the HTTP Client** - TLS provides
    encryption and authentication, ensuring the confidentiality and
    integrity of your data transmission. Both https:// and grpcs://
    schemas are supported in the request syntax.

  * **Improvements for Swagger Codegen** - The Edit Swagger Codegen
    Configuration dialog has been reworked to make it easier for you to
    tailor run configurations to your requirements. Additionally, you
    can now access Swagger Codegen run configurations right from the
    gutter without having to specify any additional settings.

  * **Support for Swagger and OpenAPI schemas in the HTTP Client** -
    The HTTP Client is now capable of understanding Swagger and OpenAPI
    specifications and providing corresponding code completion options
    for JSON request bodies.

  * **Redoc UI previews for OpenAPI and Swagger files** - IntelliJ IDEA
    now supports Redoc UI previews for OpenAPI and Swagger specification
    files, including YAML and JSON files, allowing you to switch between
    the Redoc and Swagger UIs within the IDE. With the Redocly
    integration, you can access the Try it console from within IntelliJ
    IDEA and use it to set parameters and send requests to your API.

  * **JSON body completion in JavaScript** - The IDE now provides
    completion for JSON object keys in JavaScript code, such as in code
    that uses fetch() calls or references the Axios library. Spring MVC
    server endpoints are currently supported.

  * **Support for JavaScript imports in the HTTP Client** - With this
    release, it is now possible to share common JavaScript code for HTTP
    Client request handlers via imported modules.

  * **PDF and HTML previews for responses in the HTTP Client** -
    IntelliJ IDEA is now able to display previews of PDF and HTML files
    right in the request results in the HTTP Client.

  * **Support for GraphQL and WebSocket in the HTTP Client CLI** - You
    can now use the HTTP Client CLI in IntelliJ IDEA to interact with
    GraphQL APIs and establish WebSocket connections with services, for
    example for tests or automation scripts.

  * **Auto-completion for Spring Boot configuration keys in VM options**
    - While setting up a new Spring Boot run configuration, the VM
    options field provides auto-completion options for keys appearing
    after the -D flag.

  * **Spring configuration beans no longer require the annotation
    processor** - The user experience has been streamlined when working
    with custom configuration beans in Spring within IntelliJ IDEA. The
    IDE now provides code completion and validation in properties and
    YAML configuration files, without you needing to set up the Spring
    Boot Configuration Annotation Processor.

  * **Support for Spring AOP in Kotlin** - Extended IntelliJ IDEA's
    support for utilizing AspectJ in Spring applications. The IDE now
    provides analysis and completion for Kotlin code, just as it already
    did for Java code.

  * **New inspection for detecting mismatching value types in YAML
    files** - A new inspection to eliminate the so-called "Norway
    problem" and prevent the unintended misinterpretation of Boolean
    values in YAML files has been introduced. When a list primarily
    consists of strings but contains a Boolean-like literal, IntelliJ
    IDEA will highlight this literal, indicating a potential
    inconsistency, and suggest adding quotes to it. If the list is
    mostly composed of Boolean-like literals (such as true, false, off,
    on, yes, or no), any literal that deviates from this pattern is
    highlighted as a possible error, although no specific quick-fixes
    are suggested in this scenario.

  * **Support for editing AsyncAPI files** - Working with the AsyncAPI
    specification format in IntelliJ IDEA is now much easier. The IDE
    supports schema validation functionality and provides code
    completion for references, the Endpoints view, and the Editor
    Preview pane.

**Docker**

  * **Preview of files inside Docker image layers** - It is now easy to
    access and preview the contents of a Docker image layer in the
    Services tool window. Select the image from the list, select Show
    layers, and click Analyze image for more information.

  * **Set Docker container to run as a Before Launch task for run
    configurations** - It is now possible to set a Docker run
    configuration to run before another configuration by designating it
    as a Before Launch task. The IDE will wait for the container that is
    currently running to become healthy, and then it will launch the
    next run configuration.

**Kubernetes**

  * **Support for multiple kubeconfig files within a single project** -
    A new feature that allows you to set up multiple kubeconfig files
    within a single project has been introduced. This simplifies the
    experience of handling multiple clusters or working with
    environments on different clusters in the same project.

  * **Ability to view deployment logs** - You can now view logs for
    deployments in Kubernetes clusters in the Services tool window. Right-
    click on Deployment in the tree and then select Follow Log or
    Download Log from the context menu.

**Web development**

  * **Improved error formatting in JavaScript and TypeScript** - In
    this release, your errors and warnings will now be formatted in a
    more readable way, making it easier to spot problems in your code.
    This works for all TypeScript errors, some of the most common
    JavaScript errors, and even localized errors.

  * **CSS nesting support** - IntelliJ IDEA now supports CSS nesting.
    Syntax support has been implemented and an inspection that alerts
    you if the nested selector starts with an identifier or functional
    notation has been added.

  * **Vue Language Server support** - Support for Vue Language Server
    (VLS), a.k.a. Volar, provides more accurate error detection and
    better type information in the quick navigation and documentation
    popups. By default, VLS will be used for TypeScript v5.0 and higher,
    and the wrapper over the TypeScript service will be used for earlier
    TypeScript versions.

  * **New live templates for React hooks** - Added a new set of live
    templates for React hooks.

**Сode quality workflow**

  * **Bundled Qodana code quality platform** - IntelliJ IDEA now
    simplifies configuring static analysis tools by fully integrating
    JetBrains Qodana. This integration brings you two important
    benefits. First, easy configuration allows you to trigger analysis
    with a few clicks, view project-wide problems, and set up quality
    gates in your preferred CI/CD system. Second, you can now see the
    server-side analysis results without leaving your IDE, right out
    of the box.

**Database tools**

  * **Support for Redis Cluster** - When connecting to a cluster,
    jdbc:redis:cluster: must be entered before the desired URL. Choose
    the appropriate connection type to achieve this. If SSH tunneling is
    required for the connection to the cluster, then the hosts and ports
    for all nodes in the cluster should be indicated in the URL.

  * **New UI for the schema migration dialog** - The schema migration
    functionality has been reworked. The main difference is that the
    same object is now placed on the same line in both parts of the
    dialog, making it easier to understand which objects are going to be
    added, removed, or changed in the target schema.

  * **Time zone setting for the data editor** - The Data Editor and
    Viewer settings page has a new Time zone field for setting the time
    zone in which the datetime value should be displayed.

  * **Support for external databases and datashares in Redshift** -
    Shared databases and their contents are now introspected. The
    datashares that these databases are created on are also
    introspected.

**Build tools**

  * **Support for Maven 4.0.0-alpha** - IntelliJ IDEA is now fully
    compatible with Maven 4.0.0-alpha, the latest version of Maven.

**Other**

  * Introduced an LSP API for plugin developers who want to use a
    specific LSP server for coding assistance in the IDE. If you've made
    your own programming language or framework, you can get it supported
    in the IDE by creating an LSP server and a plugin.

  * The Big Data Tools plugin has been decomposed, allowing you to use
    its parts separately. This means six new plugins are available for
    IntelliJ IDEA: Kafka, Spark, Flink, Remote File Systems, Big Data
    File Viewer, and Zeppelin. If you need all six, installing the
    umbrella Big Data Tools plugin is still possible and a convenient
    way to get them all in one click.

  * IntelliJ IDEA's bundled Android plugin now provides the features of
    Android Studio Giraffe Beta 2, including support for Android Gradle
    Plugin (AGP) 8.0.0. Please note that this support doesn't include
    the features that require signing in to a Firebase account.

  * The default value of the maximum heap size (-Xmx) has been
    changed to 2 GB.
### Updates in 2023.1

#### Features

**Key updates**

  * **New UI enhancements (Beta)** - Compact Mode has been introduced
    which provides a more consolidated look and feel of the IDE thanks
    to scaled-down spacing and elements. The new UI now offers an option
    to vertically split the tool window area and conveniently arrange
    the windows, just like in the old UI. The Run widget in the main
    window header has been redesigned so that its appearance is
    unobtrusive and easier on the eyes.

  * **Earlier availability of IDE features on project opening** -
    Improved the IDE startup experience by performing the 'Scanning
    files to index' process in smart mode. Doing so makes the IDE's full
    functionality available much earlier in the startup process. When
    opening a project, this release uses existing caches from your
    previous session with the project and simultaneously looks for files
    to index. If no changes are found in the scan, the IDE will be
    ready, eliminating the delays that were previously caused by
    indexing on startup.

  * **Faster import of Maven projects** - Improved the IDE's
    performance in importing Maven projects by optimizing dependency
    resolution as well as reworking the processes behind importing and
    configuring facets.

  * **Background commit checks** - Reworked the behavior of commit
    checks for Git and Mercurial to speed up the overall commit process.
    Checks are now performed in the background after you commit but
    before you push.

  * **Navigation to Spring Security matchers and request mappings** -
    To simplify seeing applied security rules, IntelliJ IDEA now
    provides easy navigation to security matchers from Spring
    controllers. The navigation works both from security matchers to
    controllers and vice versa.

**User experience**

  * **Full IDE zoom** - It is now possible to zoom into and out of
    the IDE entirely, increasing or decreasing the size of all UI
    elements at once.

  * **Option to save multiple tool window layouts** - In this release,
    you can now save and manage several tool window layouts and switch
    between them when needed.

  * **New Remember size for each tool window setting** - In this
    release, a new layout option has been introduced that allows you to
    unify the width of the side tool windows or retain the ability to
    freely adjust their sizes as you customize your layout.

  * **Onboarding tips in a sample project** - Introduced an option to
    open a new project containing sample code with onboarding tips. In
    the New Project wizard, check Generate code with onboarding tips to
    get a basic sandbox project with tips demonstrating some of the
    IDE's essential features. By following this small guide, users can
    try out the Search Everywhere functionality, apply a quick-fix, and
    run and debug the code, making it easier to familiarize themselves
    with the IDE.

  * **Setting to configure Actions on Save for new projects** - This
    release adds an option to predefine the behavior of Actions on Save
    for new projects.

  * **ML-powered search for classes in Search Everywhere enabled by
    default** - To provide you with more relevant and accurate search
    results, machine-learning ranking has continued to be integrated
    into the Search Everywhere (Double Shift) functionality. The sorting
    algorithm in the Classes tab is now also powered by machine learning
    by default, along with the results in the Actions and Files tabs.

  * **New suggestion to reconfigure Microsoft Defender settings for
    better performance** - In this release, there is a new notification
    that is triggered when Microsoft Defender with Real-Time Protection
    is running. Given that these antivirus checks can significantly
    decrease the IDE's speed, IntelliJ IDEA now suggests adding certain
    folders to Defender's list of exclusions. The notification provides
    options to either reconfigure these settings automatically or first
    check Defender's configuration instructions and do it manually.

**Editor**

  * **Option to specify the placement of pasted content** - In this
    release, the user experience when pasting a line that was copied or
    cut without selection has been fine-tuned. There is now a setting
    that allows you to control the placement of the pasted content.

  * **Option to show whitespaces only in selected code** - This release
    features a new Selection checkbox in Settings/Preferences | Editor |
    General | Appearance | Show Whitespaces that allows you to configure
    this setting so that the IDE shows whitespaces as small dots only
    when you select code.

  * **Custom regexp-based search and replace inspections** - With this
    release, you can use regular expressions to create your own search
    and replace inspections. These inspections can be especially useful
    for highlighting style-based or formatting-based problems.

  * **New intention action for reformatting tables in Markdown files**
    - A new intention action allows you to correct the formatting of
    tables in Markdown files.

  * **Fill Paragraph for Markdown files** - The Fill Paragraph editor
    action is now supported for Markdown files, allowing you to break
    long texts into several lines of even length.

  * **New Smart Keys settings page for Markdown** - Added a dedicated
    page for configuring and editing your Markdown preferences in
    Settings/Preferences | Editor | General | Smart Keys. This page
    should make managing your preferences easier, as it provides
    separate checkboxes for various editor features, replacing the
    single checkbox previously stored in Settings/Preferences |
    Languages & Frameworks.

  * **No spell checks for hashes and special values** - Updated the
    Typo inspection so that it no longer checks the spelling of hashes
    and special values and doesn't report them as misspelled. This
    update covers the following values:

    * Md5, Sha1, and Sha256 hex values.

    * Sha384 and Sha512 base64-encoded integrity values with the
      shaNNN- prefix.

    * JWT tokens.

**Java**

  * **New Java inspections** - The Malformed format string inspection
    now reports illegal time conversions that don't comply with common
    Java syntax. The Redundant String operation inspection is now
    capable of detecting redundant StringBuilder.toString() calls and
    providing a quick-fix to replace them with contentEquals() so that
    you don't create an intermediate String object. It also reports
    unnecessary arguments in String constructor calls and suggests a quick-
    fix that removes them.

  * **Java 20 support** - This release supports the latest updates
    added in Java 20, including the changes to the language features
    Pattern Matching for switch and Record Patterns.

  * **Improved Extract Method refactoring** - Upgraded the Extract
    Method refactoring by introducing the option to apply it even when
    the selected code fragment features several variables that need to
    be returned. In these cases, the IDE first suggests wrapping these
    variables into a new record or bean class and then performing the
    method extraction.

  * **Auto-completion in the VM Options field** - Integrated auto-
    completion functionality into the VM Options field of the Run/Debug
    configuration popup. Now, when you start typing the name of a flag,
    the IDE suggests a list of available command line options.

**Scala**

  * **Improved support for braceless Scala syntax** - IntelliJ
    IDEA can now desugar braceless Scala code properly, and it
    handles refactorings where the "fewer braces" feature is used.
    It also supports braceless syntax in worksheets and correctly
    interprets indentation when you move extensions methods up and
    down in your code.

  * **Better support for sbt projects** - In Gradle, when you have an
    empty module and want to create the root directory for the source
    code, you can use the New Directory dialog, which contains some
    helpful suggestions. With this release, this dialog is now available
    for sbt projects, as well.

  * **Upgraded Scala inspections** - The Unused declaration
    inspection has received a number of fixes and improvements.
    IntelliJ IDEA can now detect symbol usage in your project's XML
    files. The inspection also distinguishes between references to
    terms and references to types, not tagging the one as in use if it
    is actually the other that is. The Can be private inspection has
    been updated, as well. For example, you will no longer see
    highlighting for top-level definitions in worksheets and local
    classes. For recursive calls, you will now see a gutter icon to
    the left of the line with the call.

  * **Code editing improvements for Scala 3** - Improved the
    performance of Scala 3 highlighting when many implicit parameters
    are imported and are needed to parse the code, for example, when the
    Cats library is being used. This release also features many syntax
    support improvements, such as the proper automatic generation of
    overriding methods with using clauses.

  * **Streamlined import management** - If you use compiler-based
    highlighting, until now all imports have been marked as used. Scala
    3.3, however, introduced a new compiler option, -Wunused:imports.
    The IDE can now identify unused imports if your project uses this
    option. The auto-import action for Enums has also been fixed.

  * **Improvements for Scala 3 and Scala 2 decompilers** - This release
    brings numerous fixes and improvements to the Scala 3 and Scala 2
    decompilers. The output of decompiling Scala 2 and Scala 3 bytecode
    has been unified and is now easier to read.

**Profiler**

  * **Improved UI for the Flame Graph tab** - Updated the Flame Graph
    tab by introducing color-coded highlighting for calls. Methods
    belonging to the currently opened project are now highlighted in
    yellow. This way, you can easily distinguish the code that you can
    modify to resolve a given performance problem. The overall color
    scheme of the Flame Graph tab has also been reworked to make it more
    eye-friendly.

**Version control systems**

  * **VCS status color hints in the Structure tool window** - To make
    tracking changes to files more convenient, color hints have been
    added to the Structure tool window. The names of modified objects
    will now become blue, and the names of the newly added objects will
    appear in the tool window highlighted in green.

  * **Improved code review workflow for GitHub** - To simplify the
    process of reviewing code inside the IDE, the Pull Request tool
    window has been reworked. It now features a dedicated tab for each
    pull request you open. The tab instantly displays the list of
    changed files, but it now provides less information than before,
    allowing you to better focus on the current task. There is now also
    a dedicated button to easily execute the action that's considered
    the most relevant given the pull request's current state.

  * **Improved Branches popup** - Improved the usability of the
    Branches popup. For instance, navigating between branches is now
    easier, as they are grouped and stored in expandable lists.

  * **Auto-completion in the Create New Branch popup** - This release
    provides auto-completion in the Create New Branch popup. Once you
    start typing a name for your new branch, the IDE will suggest
    relevant prefixes based on the names of existing local branches.

**Build tools**

  * **Option to specify the Gradle version on project creation** - When
    configuring a new Gradle project, it is now possible to select the
    required wrapper version right in the New Project wizard. Expand the
    Advanced Settings section, uncheck Auto-select, and specify the
    preferred option. You can have the IDE remember your choice by
    enabling Use these settings for future projects below the Gradle
    version combobox.

  * **Java SDK detected from the Gradle toolchain** - When
    importing a project, IntelliJ IDEA can now detect the Gradle
    toolchain configuration and set up the matching Java SDK in the
    module's settings.

**Run / Debug**

  * **Option to assign a custom shortcut to run the current file with
    coverage** - In this release, it is possible to create a shortcut
    to launch the Run with coverage action for the file you currently
    have open, even if the run configuration hasn't been created yet.

  * **Option to filter classes in the Coverage view** - In this
    release, you can filter classes in the Coverage view to focus on
    recently updated classes and methods that require special attention
    when testing. By default, you'll see a list of classes with
    uncommitted changes. The second filtering option allows you to hide
    classes that are fully covered.

**Frameworks and technologies**

  * **Spring Security 6 support** - This release provides updated
    support for navigation to URL mappings and security roles for APIs
    introduced in Spring Security 6.

  * **Delegation of building and running to Gradle in the Spring run
    configuration** - In the Spring run configuration, Gradle is now
    the default option for running and building projects. The IDE now
    uses the main setting to build and run the project using Gradle as
    defined in Settings/Preferences | Build, Execution, Deployment |
    Build Tools | Gradle.

  * **Option to share Spring and JPA facet settings via VCS** - With
    this release you can change and share Spring and JPA settings via
    custom facets in File | Project Structure | Modules.

  * **Ability to run MongoDB queries in the Database console from Spring
    and Micronaut Data repositories** - This release makes it possible
    to run MongoDB queries in the Database console from Spring and
    Micronaut Data repositories.

  * **Project Reactor: Improved inspections for reactive code** - This
    release provides a wider array of inspections for reactive code. For
    example, the IDE now reports usages of transformation operators with
    the Mono<Void> type described in the Reactor 3 Reference Guide.

  * **Apache Dubbo support** - Implemented a new dedicated plugin that
    integrates Apache Dubbo, providing the framework's functionality as
    part of IntelliJ IDEA's support for Spring. You can download this
    plugin from JetBrains Marketplace or install it right in the IDE via
    Settings/Preferences | Plugins.

  * **Recognition of Swagger annotations for OpenAPI generation** - If
    you define additional metadata for APIs using Swagger 2.X
    annotations in Spring controllers, IntelliJ IDEA now includes these
    annotations when generating OpenAPI files from the URL inlay popup
    dialog or from the Endpoints tool window.

  * **Option to edit parts of OpenAPI specifications split over several
    files** - It is now possible to edit parts of bigger OpenAPI
    specifications in separate files while easily navigating between
    them. In addition, the IDE provides code completion and
    highlighting for these files in the same way it does for the main
    specification file.

  * **Option to run GRPC requests from the Endpoints tool window** -
    With this release, it is now possible to run GRPC requests from
    proto files that contain imports from .jar archives.code completion
    for request bodies has also been improved, like for the OneOf and
    Map<K,V> types. The HTTP Client tab for Protobuf endpoints has also
    been added in the Endpoints tool window.

  * **Improved editing support for application.yaml configuration files
    in Ktor** - The IDE now provides all of the editing features
    necessary to work with application.yaml configuration files in Ktor,
    including code completion, highlighting, and validation.

**Docker**

  * **Merged logs from all Docker Compose containers** - The Dashboard
    tab of the Docker Compose node now pulls together logs from every
    Docker Compose container and displays them all in one place, updated
    in real time.

  * **Support for Microsoft Azure Container Registry** - You can now
    easily connect to Azure Container Registry. Go to
    Settings/Preferences | Build, Execution, Deployment | Docker |
    Docker Registry and set it up by selecting the Docker V2 option in
    the Registry input field.

  * **New setting to apply the :z mount option to bind volumes on
    SELinux** - You now have the ability to add :z configuration flags
    to Docker bind mounts, allowing you to connect volumes to Docker
    containers on SELinux workstations.

  * **Docker container health statuses in the Services tool window** -
    This release informs you about the results of Docker health checks.
    You can now see health statuses of the running Docker containers
    next to their names in the Services tool window. Also, to make it
    easier to parse the statuses at a glance, containers that are
    starting and operating normally feature a small green dot on the
    icon, while the unhealthy containers are marked with red.

  * **Docker debug deprecated** - The Docker debug functionality has
    been deprecated. To debug your applications using Docker containers,
    please use Run targets instead.

**Kubernetes**

  * **File templates in the New Kubernetes Resource popup** - To make
    creating new Kubernetes files easier, a new action has been added to
    the File | New menu. Once you select the New Kubernetes Resource
    option, you'll see a popup that features a list of the most popular
    resource types, such as Pod, Deployment, ConfigMap, and others.

  * **Action to create new Kubernetes Secrets** - This release
    introduces a new dialog for creating Kubernetes Secrets. To define a
    new Secret, you can input Key and Value data manually or specify a
    file whose content will be used.

  * **Color-coded change markers for Kubernetes resources loaded from
    cluster** - When you use the View YAML action for resources from a
    cluster and make any changes in the opened file, IntelliJ IDEA now
    highlights all of your edits with color-coded marks in the gutter.
    This way, you can be sure that the changes are made to the required
    parts of the resource before you apply them back to the cluster.
    Additionally, using the Compare with Cluster icon opens a full diff
    view that will fetch the resource's current version from the cluster
    and compare it with the local version.

  * **Improved user experience with kubeconfig files** - This release
    refines the user experience for working with kubeconfig files. You
    can now easily access a kubeconfig file in the Services view and
    open it in the editor. If you change a kubeconfig file outside of
    the IDE, IntelliJ IDEA will detect this and automatically refresh
    the configuration in the Services tool window. Code highlighting and
    completion for kubeconfig files are also provided.

  * **Ability to assign custom shortcuts for actions in the Services
    view** - You can now assign shortcuts for most Kubernetes actions
    in the Services view, like Forward Ports, Delete Resource, and
    Describe Resource, among others.

**Remote development and collaboration**

  * **Additional insight into items only available to Сode With Me
    session hosts** - When guests connect to a session, their client
    now looks more like a regular JetBrains IDE. They can see all of the
    items the host sees, including grayed-out ones that only the host
    can access. Guests can clearly see what is unavailable and ask hosts
    to implement those actions on their behalf.

  * **One-click permission requests and approvals in Code With Me** -
    Guests can now request additional permissions by simply clicking on
    a key icon next to an unavailable item. Now hosts don't have to
    determine necessary access from the start and can easily approve
    extra permissions from any guest on the fly.

  * **Improved overview of recent remote development projects** -
    Recent projects are now stored on the host instead of the client.
    This gives you accurate, up-to-date information even if you connect
    from a different client. More useful options have also been added,
    such as selecting which version of the IDE to use on the host.

**Web development**

  * **Astro support** - Added support for Astro in IntelliJ IDEA.
    You can get it through the new Astro plugin, which can be
    installed from Settings/Preferences | Plugins. The plugin
    provides basic functionality including syntax highlighting, code
    completion with automatic imports, refactorings, navigation,
    correct formatting, and more.

  * **Support for TypeScript in Vue templates** - Added TypeScript
    support in Vue templates. It's enabled when you set the lang
    attribute in a script tag to ts. Previously, JavaScript was used
    regardless of the lang attribute in the script tag. IntelliJ IDEA
    will now provide support for inline casting, improved type
    narrowing, and correct information about inferred types in quick
    documentation in templates of Vue Single-File Components.

  * **Automatic conversion of strings to template literals** - IntelliJ
    IDEA will now transform your single- or double-quoted strings into
    template literals automatically whenever you type ${. This works for
    raw strings as well as for JSX properties.

  * **Tailwind CSS configuration** - Added support for configuration
    options, such as custom class name completion under the
    classAttributes option, or experimental ones like
    tailwindCSS.experimental.configFile.

**Other**

  * The Android plugin bundled with IntelliJ IDEA now provides all the
    features of Android Studio Electric Eel, including support for the
    Android Gradle Plugin (AGP) 7.4.0.
### Updates in 2021.3

#### Features

  * **Key updates**

    * **Remote development (Beta)** - IntelliJ IDEA Ultimate now
      supports a Beta version of the Remote Development workflow. It
      allows you to connect to a remote machine running IntelliJ
      IDEA’s backend from anywhere in the world. All the processing
      happens on that powerful remote machine, and you can work on your
      project as seamlessly as if it were on your local one. This
      functionality can be initiated from IntelliJ IDEA’s Welcome
      screen or from a new application called JetBrains Gateway, which
      is available in the Toolbox app. What’s more, you can create,
      prebuild, share, reproduce, hibernate, and manage dev environments
      with Space - a unified platform for the entire software
      development pipeline.

    * **Troubleshooting IDE issues** - IntelliJ IDEA 2021.3 brings a
      new, faster way to diagnose and fix issues that are causing your
      IDE to not work properly. If your IDE isn’t working properly,
      invoke the new Repair IDE... action from the File menu. It will
      guide you through a sequence of steps to troubleshoot some of the
      most common problems.

    * **Constant conditions inspection for Kotlin** - Added the new
      Constant conditions inspection, which helps IntelliJ IDEA report
      non-trivial conditions and values that are statically known to
      be always true, false, null, or zero. It works the same way as
      the similar inspection for Java, and it supports most of the
      same checks.

    * **Debugger updates for Kotlin:**

      * **Smart Step Into** - When you want to debug an expression with
        chained method calls and lambdas, the Step Into action gives you
        the functionality of Smart Step Into by default. It highlights
        the methods and lambdas you can step into.

      * **Inline stack frames** - The debugger can now detect Kotlin
        inline functions and display inline function calls in the stack
        trace panel. You can navigate to these calls, and you can also
        inspect and evaluate the variables of each frame.

  * **Editor**

    * **Change font size in all the tabs** - Added the ability to
      change the font size in all open tabs simultaneously with
      ⌘+mouse wheel on Apple macOS or Ctrl+mouse wheel on Microsoft
      Windows and Linux.

    * **Improved intention preview:**

      * IntelliJ IDEA has a helpful option that allows you to preview
        the results of intention actions and quick-fixes before applying
        them to your code.

      * In IntelliJ IDEA 2021.3, it works for more intention actions and
        quick-fixes in Kotlin, and the “Preview isn't available”
        message has been replaced with more informative HTML
        descriptions of the intention actions that aren’t supported.
        What’s more, for an action that modifies several files, the
        preview displays part of a possible outcome. This partial
        outcome should be enough to give you a general idea of what the
        action will change.

    * **Improved Markdown support** - Tables can now be created with
      ease. Simply invoke the context menu and select Insert | Table.
      You can select the preferred size using the mouse hover action or
      the keyboard. The cell width in the table will be adjusted as you
      type. You can edit the table content using the floating toolbars.
      To create a new row you can use Shift+Enter, and Tab to navigate
      to the next cell.

  * **User Experience**

    * **New Bookmarks tool window** - Added the new Bookmarks tool
      window that is destined to replace a similar instance –
      Favorites.

      * From now on, you can simply use the F3 shortcut on macOS or F11
        on Windows and Linux to mark your files, folders, and classes as
        important.

      * When you add a bookmark, by default IntelliJ IDEA puts it in the
        node named after your project in the Bookmarks tool window.

      * Every time you add a new bookmark, it will appear at the top of
        the list inside this node.

      * You can sort your bookmarks by type using the Sort Groups and
        Bookmarks option in the tool window’s settings.

      * You can also create new nodes and drag and drop items in them.

    * **Ability to split the Run tool window** - Added the ability to
      split the Run tool window with tabs. This allows you to run
      several configurations simultaneously and see all of the results.
      To split the window, drag the tab you want to see to the
      highlighted area inside the Run tool window and drop it there. To
      unsplit the window again, right-click the top pane and select
      Unsplit from the context menu.

    * **ML-based search for actions in Search Everywhere** - When
      searching for actions, Search Everywhere in IntelliJ IDEA is now
      powered by machine learning by default. An ML-based formula has
      been trained that takes into account:

      * The specific user’s action usage history.

      * Action usage frequencies across the whole user base.

      * The lengths of the search query, the action’s name, and so on.

    * **Improved Find Usages** - When you search for usages of a method
      implementation via ⌥F7 on macOS or Alt+F7 on Windows and Linux,
      the IDE no longer asks whether you want to find usages of the base
      method in a pop-up. Instead, IntelliJ IDEA will use top-level
      hierarchy methods as targets for your search by default. If you
      want to change this behavior, deselect the Search for base method
      usages checkbox in the Find Usages tool window settings, which you
      can access by clicking the gear icon.

    * **Reworked Show Usages** - The Show Usages dialog has received
      several useful new features:

      * Introduced the source code preview per found usage, which you
        can see by clicking the square icon in the top toolbar pane.

      * Another update lets you change the scope of your search with the
        new drop-down list located next to the Preview icon.

      * The window’s title bar now shows the type of code element you
        are searching for and the number of usages found.

      * Another minor yet very convenient update allows you to set the
        dialog width, which the IDE will retain the next time you
        invoke it.

    * **Reworked Empty Project and new Multi-Module Project nodes:**

      * You can now select the Empty Project node to create a basic
        project for working with separate files of different types and
        adding Java and Kotlin classes.

      * The IDE will automatically configure the project so that you can
        compile it if any Java or Kotlin classes are present.

      * The new Multi-Module Project node lets you create a project with
        a complex structure from scratch. Once the project is created,
        the Project Structure dialog will open, and you’ll be able to
        add various modules.

    * **Accessibility updates** - IntelliJ IDEA 2021.3 addresses some
      accessibility issues to make working with the screen reader more
      comfortable:

      * The tool window widget pop-up has been disabled and the quick
        documentation pop-up that used to appear on mouse hover.

      * Fixed an issue with calling the Go to Declaration dialog.

      * The accessibility support on macOS has also been improved.

      * Resolved several issues with the voiceover focus and made it
        possible for screen readers to detect the list items in the New
        Project wizard when you create projects.

      * To minimize distractions while you're coding, the number of help
        tooltips that play sounds has been decreased.

  * **Java**

    * **Inspection for tracking unsafe strings** - IntelliJ IDEA now
      warns you about hazards such as SQL injection and XSS flaws,
      sensitive data leaks, and insecure deserialization. It also
      prevents you from passing insecure data to secure methods. These
      additional warnings are provided by the new Non-safe string is
      passed to a safe method inspection. For this inspection to work,
      you need to annotate strings as @Untainted (“safe”) or
      @Tainted (“unsafe”). These annotations will become valid when
      you add the org.checkerframework.​checker.​tainting.​qual
      dependency.

    * **Other new Java inspections** - Added two inspections that can
      help you to simplify your code. The first one suggests that you
      replace collect(toList()) with .toList(). You can use it with Java
      versions 16 and up. Another inspection prompts you to replace
      collection.addAll(List.of("x")) with collection.add(x), and
      map.putAll(Map.of("a", "b")) with map.put("a", "b").

    * **Improved refactorings:**

      * When you introduce a local variable in Java, the settings that
        are applicable to it no longer appear in a pop-up, which used to
        cover the code you were writing. Instead, you can access these
        options by clicking the gear icon next to a variable or by using
        the ⌥⇧O shortcut on macOS or Alt+Shift+O on Windows.

      * Improved the Introduce parameter refactoring. When you invoke
        this refactoring, with ⌥⌘P on macOS or Ctrl+Alt+P on Windows
        and Linux, the IDE asks where you want to replace occurrences.
        After you make this selection, a gear icon will appear, and
        clicking on it will allow you to configure more settings for the
        refactoring.

    * **Customizable classpath in Run/Debug Configurations** -
      Sometimes you may need to define custom classpaths in the
      Run/Debug Configurations dialog on a per-config basis. Starting
      from this version, it is possible to do so by selecting Modify
      options | Modify classpath.

  * **Kotlin**

    * **Extract constant refactoring** - Introduced a new refactoring
      that lets you extract constants in Kotlin. To use it, put the
      caret on a string and press ⌥⌘C on macOS or Ctrl+Alt+C on
      Windows and Linux.

    * **Improved Possibly blocking call in non-blocking context
      inspection** - The Possibly blocking call in non-blocking context
      inspection warns you if you use a coroutine in the wrong context.
      In this release, the inspection works not only as a warning but
      also as a context-dependent quick-fix. This inspection now covers
      more cases, and you can customize it, so it works better in your
      particular environment.

    * **Inline hints for ranges** - Sometimes it can be difficult to
      understand the various ways to declare the ranges that Kotlin
      supports. To make it a little easier, inline hints have been added
      that explain with plain mathematical signs what the words or
      symbols in the ranges mean. If you don’t need this feature, you
      can easily disable it by right-clicking on a hint and selecting
      Disable ‘Ranges’ hints type.

    * **Better New Project wizard** - Reworked the layout of the New
      Project wizard by adding tooltips for all of the fields, so you
      can easily understand what info they require. The templates
      section has received an update as well – Some of the unpopular
      templates have been removed and a new one has been added that
      lets you create a Compose Web Application. The project set up
      step has become much simpler. You now only need to fill in the
      basic fields.

  * **Scala**

    * **Scala 3 support improvements:**

      * Added highlighting, navigation, and autocomplete for end
        markers.

      * There's now autocomplete for given, using, and export keywords,
        soft keywords, and the quiet syntax.

      * The TASTy reader can now parse package objects, as well as
        variance and bounds in higher-kinded types.

      * The highlighting of lexer and parser errors is now
        significantly faster.

      * There are more inspections that are compatible with Scala 3.

      * Improved the resolve of given imports and supported final top-
        level members and abstract lazy vals.

    * **An option to open Scala 3 / Scala 2 cross-compiled projects as
      Scala 2** - Many projects that should be compiled for both Scala
      2 and Scala 3 are modeled as Scala 3 projects cross-compiled for
      Scala 2, even though technically they are Scala 2 projects.
      Opening such projects as Scala 2 allows the IDE to use the correct
      Scala version, and is more reliable.

    * **Data flow analysis for Scala** - The Scala plugin now supports
      data flow analysis, which can help you detect programming errors
      more easily.

    * **Autocomplete for Scala compiler options** - There are many
      different options in the Scala compiler, those options vary
      depending on the Scala version in use. You can now autocomplete
      the applicable options and even see Quick Documentation for
      each of them.

    * **Inlay hints for ranges** - Added inlay hints for ranges.

  * **JavaScript**

    * **New inspection for updating dependencies** - This release
      allows you to update your npm packages to the latest version right
      from the editor. Open your package.json file, place the caret on
      the package version you want to update, and then press ⌥⏎ on
      macOS or Alt+Enter on Windows and Linux and select Update
      ‘package name’ to the latest version. A quick-fix will also be
      shown when you hover over the package version.

    * **Improved code completion in HTML** - Improved the way code
      completion works in HTML. Whenever you type a tag name or an
      abbreviation in the editor, or invoke code completion, IntelliJ
      IDEA will show you relevant suggestions right away. Previously, it
      would only show them if you typed < first. Additionally, code
      completion for character entity references should now work better.

  * **SSH**

    * **Proxy support for SSH connections** - This new feature allows
      you to specify an HTTP or SOCKS proxy server for your SSH
      configuration in Preferences/Settings | Tools | SSH
      Configurations. Under the new HTTP/SOCKS section, you can select
      the proxy type, enter a hostname and a port, and apply
      authentication with a username and password, if necessary. It is
      also possible to sync your SSH proxy settings with the global IDE
      ones. To do so, select the Use global IDE proxy settings checkbox.

  * **Profiler**

    * **Compare .jfr snapshots** - It is now easy to check whether the
      changes you’ve made worked for your program or caused a
      regression. To do so, just open two snapshots that you want to
      compare in the Profiler tool window. In the most recent snapshot,
      click the diff icon and select the snapshot you’ll use as the
      baseline. The IDE will display the result in the form of a flame
      graph, call tree, or method list.

    * **Support for Async Profiler 2.0 on Windows** - Starting from
      v2021.3, the Windows version supports Async Profiler 2.0 out of
      the box as well. This support provides a smoother profiling
      experience and also improves the way native functions are
      displayed in snapshots.

  * **Build tools**

    * **Redesigned Maven configurations** - This release takes some
      steps toward improving the Run/Debug configurations, and this
      time, Maven configurations have received a significant redesign.
      The key parameters are all grouped on one screen, while additional
      options are available via Modify options.

    * **Support for .mvn/maven.config** - If you want to configure the
      Maven settings for each project in the .mvn/maven.config file, go
      to Preferences/Settings | Build, Execution, Deployment | Maven and
      select Use settings from .mvn/maven.config at the bottom of the
      screen. Please keep in mind that the settings from this file
      override the standard Maven UI settings.

  * **Version control**

    * **Checkout and Rebase onto Current for remote branches** - With
      the Checkout and Rebase onto Current action, you can check out the
      selected branch and rebase it on top of a branch that is currently
      checked out. Previously, this action was available for local
      branches only. Now you can use it for remote branches as well.

    * **Reorganized VCS settings** - Improved the way the settings in
      Preferences/Settings | Version Control are structured, and made
      some of the critical configurations there more discoverable. The
      Version Control node now serves as the starting point for
      navigation, with links to all the available settings. If you go to
      the Git node from there, you’ll notice that all the settings
      have been divided into sections that account for the most
      important processes: Commit, Push, and Update. The parameters
      inside these sections are now organized more logically. A separate
      node for Directory mappings has been added, and the background
      operations are now switched on by default. The Background node no
      longer exists.

    * **New Changes tool window** - Starting from this release, your
      IDE shows the difference between commits in a separate Changes
      tool window located to the left of the editor.

    * **New Push All up to Here action** - Added a new action that
      allows you to push only the commits you are confident about and
      leave the rest for later. It allows you to push commits up to
      the one you have selected in the Log tab of the Git tool window.
      To use it, pick the commit you want to stop at, right-click on
      it to call the context menu, and select the new Push All up to
      Here action.

    * **Align Changes Highlighting** - Added the new Align Changes
      Highlighting option to the Diff screen settings that can be found
      under the gear icon. This feature makes the Diff easier to read,
      especially when there are complex modifications, because it
      aligns the unchanged lines so that they are displayed next to
      each other. This helps you see the code that has been added or
      removed more clearly.

  * **Terminal**

    * **ConPTY support on Windows** - Added support for the new ConPTY
      API on Windows. It addresses several issues users were having with
      the old implementation, which was based on winpty, and adds
      support for 24-bit colors in the terminal.

    * **Typeahead support** - The newly added typeahead support in the
      IntelliJ IDEA terminal predicts text modifications and instantly
      displays them in light grey. This feature allows you to type in
      the terminal equally fast on both a local or remote machine.

  * **Debugger**

    * **Evaluate expressions from the debugger** - Improved the
      discoverability of the Evaluate feature. Previously, when users
      needed to evaluate something, many of them resorted to using
      watches. They just created a watch and then removed it, instead of
      using the Evaluate dialog. The Evaluate field is now accessible
      right in the Debug tool window, making the most convenient way to
      evaluate expressions more obvious.

  * **Frameworks & Technologies**

    * **gRPC requests in the HTTP client** - IntelliJ IDEA’s HTTP
      client provides basic support for gRPC requests. When you type the
      GRPC keyword to start your request, the HTTP client offers code
      completion. Your IDE prompts you about all known gRPC services,
      unary and server-streaming methods of a particular server, and,
      most importantly, fields of the request body. Another new feature
      allows you to generate a gRPC request in the HTTP client. To do
      so, just click on the gutter icons in your .proto files.

    * **Binary responses in the HTTP client** - The HTTP client can now
      detect images in responses and display previews of them in the
      response console.

    * **Support for text streams and JSON streams in the HTTP Client**
      - When testing streaming applications in IntelliJ IDEA, you no
      longer need to wait for a stream to end because the HTTP client
      will display the output on the fly. This is now possible because
      support has been added for the following content types: text/event-
      stream, application/stream+JSON, and application/x-ndjson. You
      will also be notified when a stream ends.

    * **Output redirection to custom file or directory in the HTTP
      client** - In the HTTP client, it is now possible to redirect
      output to a custom file or directory. You can use two operators
      for forced and soft redirects:

      * The >> operator always creates a new file, adding an -n suffix
        to the file name if the requested file name already exists.

      * The >>! operator rewrites the file if it already exists.

    * **Support for HTTP request identifiers** - You can now add
      request identifiers either as comments via @name or as text in the
      first separator (###). The IDE understands these identifiers and
      allows you to invoke requests by them from the Services tool
      window, as well as from the Run Configuration, Run Anything, and
      Search Everywhere dialogs.

    * **Qute template language support** - Qute is now among the
      supported template languages. This means that IntelliJ IDEA
      provides code highlighting, autocompletion, and other useful
      features to help you develop templates for your Quarkus project.

    * **References resolve and completion from secondary specification
      files** - IntelliJ IDEA can now detect when your OpenAPI
      specifications are located in several files and linked via $ref,
      and it will provide completion.

    * **New Blocking and Non-Blocking annotations for reactive code**
      - 2 additions have been made to the JetBrains annotation
      collection. Once you add 'org.jetbrains:annotations:23.0.0' to
      your project dependencies, you can annotate your classes and
      methods as @Blocking or @NonBlocking. This will make it
      possible for the IDE to detect blocking calls in non-blocking
      contexts, such as Kotlin coroutines or reactive code with
      Project Reactor, RxJava, and SmallRye Mutiny. The IDE now
      automatically supports the corresponding annotations from
      Micronaut and SmallRye Mutiny as well.

    * **Improved blocking code detection in Spring and Java EE** -
      IntelliJ IDEA now detects more cases of blocking code in Spring
      and Java EE, including Spring Data’s JpaRepository and
      CrudRepository, RestTemplate and JdbcTemplate, Spring Feign
      interface methods, JPA EntityManager calls, and any methods and
      classes annotated as @Transactional.

    * **Revamped Spring Boot Configurations** - Reworked the Run/Debug
      Configurations dialog for Spring Boot projects. The design is
      similar to previously updated configurations for Java. The new
      interface presents the key settings on one screen and allows you
      to configure more parameters via Modify Options.

    * **Improved support for Spring Boot application files** - IntelliJ
      IDEA now provides code completion in additional configuration
      files (properties or .yaml files) when a spring.config.import key
      is used to reference another file. It is also better at setting up
      complex and custom Spring Boot configuration files.

    * **References to application.yaml** - For Spring Boot projects,
      the IDE now supports code completion and find usages for
      references to application.yaml from @Value, @Scheduled, and
      Environment.getProperty().

    * **Better support for @NamedQuery used from Spring Data
      repositories** - Query method completion now works for queries
      declared as @NamedQuery in Spring Data JPA projects. You can also
      navigate to the definition of a @NamedQuery via the gutter icon.

    * **Kotlin support for Java EE CDI** - Starting from v2021.3, you
      can use all CDI inspections in Kotlin files. Previously these
      inspections only worked in Java files. CDI gutter icons have been
      added in Kotlin files. They allow you to navigate easily to
      injection points or injection candidates, bean makers, disposer
      methods, and events.

    * **Improved UML class diagrams** - Improved the speed of all the
      processes for UML class diagrams, both in Java and Kotlin. Diagram
      opening, switching between categories, zoom, and the undo/redo
      functionality now all take much less time. Other notable changes
      include a new grid, member highlighting, and a quick documentation
      preview pop-up. If you need to control the appearance of the
      diagram, use the context menu and select Appearance.

  * **Database tools**

    * **Data editor aggregates** - Added the ability to display an
      Aggregate view for a range of cells. This will help you manage
      your data and spare you from having to write additional queries.
      This makes the data editor more powerful and easier to use,
      bringing it a step closer to Microsoft Excel and Google
      Spreadsheets. Select the cell range you want to see the view for,
      then right-click and select Show Aggregate View.

    * **Mapping the DDL data source and the real one** - This release
      is a logical continuation of the previous one, which introduced
      the ability to generate a DDL data source based on a real one.
      Now, this workflow is fully supported. You can:

      * Generate a DDL data source from a real one.

      * Use the DDL data source to map the real one.

      * Compare and synchronize them in both directions.

      * Just as a reminder, a DDL data source is a virtual data source
        whose schema is based on a set of SQL scripts. Storing these
        files in the Version Control System is a way to keep your
        database under the VCS.

      * There is a new tab in the data configuration properties, DDL
        mappings, where you can define which real data source is mapped
        to each DDL data source.

    * **New database diff window** - The new Database Diff window is
      available from the context menu.

      * It has a better UI and clearly shows in the right-hand pane what
        result you’ll get after you perform the synchronization. The
        legend in the right-hand pane shows what the colors mean for
        your potential result:

        * Green and italic: object will be created.

        * Grey: object will be deleted.

        * Blue: object will be changed.

      * The Script preview tab shows the result script, which can be
        either opened in the new console or run from this dialog. The
        result of this script is applying changes to make the
        database on the right (target) a copy of the database on the
        left (source).

      * Besides the Script preview tab, there are two more tabs on the
        bottom pane: Object Properties Diff and DDL Diff. They display
        the difference between the particular versions of the object in
        the origin and in the target databases.

    * **Introspection:**

      * **Introspection levels (Oracle)** - Introduced three levels of
        introspection for Oracle databases:

        * Level 1: Names of all supported objects and their signatures,
          excluding names of index columns and private package variables

        * Level 2: Everything except source code

        * Level 3: Everything

      * Introspection is fastest on level 1 and slowest on level 3. Use
        the context menu to switch the introspection level as
        appropriate.

      * The introspection level can be set either for a schema or for
        the whole database. Schemas inherit their introspection level
        from the database, but it also can be set independently.

      * The introspection level is represented by the pill-looking icons
        located next to the data source icon. The more the pill is
        filled, the higher the level. A blue icon means that the
        introspection level is set directly, while a grey one means that
        it is inherited.

  * **QA tools**

    * **Editing Selenium page objects** - Added support for UI test
      automation in Selenium – the visual editor can now help you to
      maintain existing page object classes. Previously, it was only
      possible to generate new page object classes, but now you are even
      able to update the existing page object classes directly without a
      visual editor. IntelliJ IDEA will detect page object classes
      automatically and indicate them with a corresponding icon on the
      gutter panel. By clicking on that gutter panel, the user can open
      a visual editor and grab new elements to be added to the page
      object class.

    * **Test Data** - In the newest plugin from the Test Automation
      Kit, you can now modify the prefix, suffix, and delimiter with a
      multiline definition in multiple data generator settings.

    * **Test Management:**

      * **Test Run Hierarchy** - Added support for multilevel test
        runs. You can now create multiple child test runs for specific
        functionality domains or types of testing. Each parent test run
        aggregates the results of the child test runs and provides
        summary statistics from all sub-related test runs.

      * **Shared steps** - If you choose to manage test cases in
        Markdown files using the “Local TMS” feature, you will be
        able to easily declare test steps and share them among multiple
        test cases. Shared steps are declared as a regular Test Case
        with a unique numeric ID. You can refer to that test case in
        other test cases and IntelliJ IDEA will substitute those
        referenced test case steps when generating previews, test runs,
        or code templates for an automatic test.

  * **Kubernetes**

    * **Improved formatting for Helm templates** - You can now format
      your Helm templates and be sure of the correct result. All the
      related issues have been fixed, and the formatting is now much
      more reliable. To see the improvement, go to Code | Reformat code
      or Reformat file or press ⌥⌘L on macOS or Ctrl+Alt+L on
      Windows and Linux.

    * **Highlighting of block elements in Helm templates** - Added
      highlighting of such block elements as if, else, range, with, and
      define in Helm templates. This makes it a lot easier to work with
      code that contains Go templates inclusions.

    * **Language injection in ConfigMap resources** - IntelliJ IDEA now
      supports automatic code injections of various languages in
      ConfigMap resources for keys with extensions like .yaml, .json,
      .properties, and so on. The injected pieces of code are
      highlighted in green, and it is possible to use the code insight
      functionality inside them, including code completion, error
      highlighting, and others.

    * **Ability to repeat the latest command** - It is now possible to
      rerun your latest helm command from the Services tool window. All
      you have to do is click the new icon in the top right-hand corner.

  * **Docker**

    * **Connection to Docker from Minikube** - It is now easy to
      connect to a Docker daemon from Minikube. In Preferences/ Settings
      | Build, Execution, Deployment, select the Minikube radio button.
      In the field next to it, the IDE will automatically display the
      detected Minikube's docker-daemon environments that you can use
      for connecting.

    * **Easier connection process** - Connecting to Docker has become
      faster because you can simply double-click on the necessary node
      or use the new shortcut – ⌘Enter on macOS or Ctrl+Enter on
      Windows and Linux. The Start container action can also be invoked
      with this shortcut.

    * **New Clean up action** - The new Clean up action works just like
      the prune terminal command. When you right-click on the Networks,
      Volumes, Containers, or Images node, you can select Clean up, and
      the IDE will delete the unused objects. You can also apply this
      action to the Docker root node to prune all the unnecessary
      objects in one click.

    * **Support for Compose V2** - IntelliJ IDEA now supports Compose
      V2, which allows you to run Docker Compose commands as docker
      compose, instead of docker-compose (with a dash). To activate this
      option, go to Preferences/Settings | Build, Execution, Deployment
      | Docker | Tools and tick the Use Compose V2 checkbox.

    * **Image layers** - Image layers allow you to track all the
      commands that are applied to images. To access them, select an
      image and go to the Layers tab. From there, when you choose a
      command, you can click on the Analyze image for more information
      link on the right-hand side of the screen for more detailed info
      about the changes applied to each layer.

    * **Save container as image** - If you have a preconfigured
      container that you want to use later, you can save it as an image
      locally and push it to continue using it remotely when you need
      it. Go to the Services tool window, right-click on the container,
      and select Image | Save as a new Image.

    * **Registry updates** - Added several changes to the Docker
      registry:

      * The IDE now displays all available registries in separate nodes
        in the Services tool window.

      * Previously there was only support for the Docker Hub
        registry. In v2021.3, support for GitLab
        (registry.gitlab.com) and JetBrains Space
        (<username>.registry.jetbrains.space) has been added.

      * You can expand the registry nodes in the Services tool window,
        select the necessary image, and pull it to the desired location.
        If you have several Docker connections, the IDE will ask you
        where to pull the image.

      * It is now possible to push images to any added registry, and in
        the Push dialog the IDE automatically detects the available
        namespaces in the given registry and lets you select one from
        the drop-down list.

      * You can now use image completion for images from the JetBrains
        Space, GitLab, and Docker Hub registries.

    * **Podman support** - IntelliJ IDEA now supports Podman as an
      alternative way to manage pods, containers, and images. Before
      using Podman in the IDE, configure a connection yourself. Once
      Podman has been installed and configured on your OS, you can
      connect to it via Preferences/Settings | Build, Execution,
      Deployment | Docker by selecting the TCP socket radio button and
      filling in the required fields.

  * **Space integration**

    * **Create merge requests and create code reviews from the IDE** -
      You can now create merge requests and code reviews for your
      projects in Space. You have 2 different options:

      * Click the + icon on the top toolbar of the Code Reviews tool
        window and select the desired action.

      * In the Log tab of the Git tool window, right-click the commit
        in the list and choose Space | Create merge request or Create
        code review.

    * **Mark files as viewed** - All the files that you haven’t yet
      revised when performing a code review will remain marked with blue
      dots until you open them. This way, you won’t miss any critical
      changes. If you want to return to the changes later, you can
      select Mark as Not Viewed from the context menu. This feature also
      works for GitHub pull requests.

  * **Other**

    * IntelliJ IDEA now supports Android Studio Arctic Fox, 2020.3.1.

    * Added support for Groovy 4, including full-fledged code insight,
      functioning inspections, and intention actions. Additional
      features, such as switch expressions and sealed types, are
      supported as well.
### Updates in 2021.2

#### Features

  * **Key updates**

    * **Project-wide analysis for Java projects** - Added a new
      feature for tracking errors throughout the whole project before
      compilation - project-wide analysis. The IDE will display all
      the found errors, including those that are detected only by
      scanning the whole project. The feature works with small and medium-
      size projects.

    * **Actions on save** - Added a number of actions that will be
      initiated by saving the project, including reformatting code and
      optimizing imports.

    * **New UI for managing Maven and Gradle dependencies:**

      * Added Package Search, a powerful new interface to manage your
        project dependencies. With Package Search, you can find new
        dependencies, easily add them, and manage existing ones. The new
        plugin will show you information about each dependency,
        including whether any updates are available.

      * Added an inspection that lets you apply available updates
        directly in the editor.

  * **Editor**

    * **Updated inspections and quick-fix descriptions** - The
      inspections and quick fixes are not just helpful for coding but
      also described in detail. The updated descriptions explain what
      changes the inspections suggest and the reasoning behind them.
      Some inspections come with usage examples.

    * **Diagrams structure view** - Diagrams have been made more
      informative - they now come with the Structure view containing a
      map of your diagram with a small preview of the selected block and
      its neighbors. The new Structure view supports scaling, canvas
      moving, magnifier mode, layout change and exporting to an image.

    * **Multiple copyright years** - Your project’s copyright notice
      can now include both the project creation year and the current
      version year.

    * **Improved Markdown support:**

      * It is now possible to convert .md files from/to different
        formats (.html, .docx, .pdf).

      * You can change the size of an image, add a description and drag
        and drop images instead of writing an HTML tag with a file path.

      * Added a new lightweight toolbar, which has all the most popular
        actions and will only appear on selection so as not to distract
        you from important tasks.

  * **User Experience**

    * **Quick access to Eclipse projects** - IntelliJ IDEA can now
      detect Eclipse projects stored locally on your machine and it
      allows you to open them from the Welcome screen.

    * **Advanced Settings** - If you need to configure some use case
      specific options, you can do it in the new Advanced Settings node.

    * **Organize tool windows by drag and drop** - It is now easier to
      drag and drop a tool window to the desired place within the main
      IDE window or in a separate window. You can drag it by clicking
      and holding the tool window name bar and drop it in any
      highlighted place.

    * **Automatic cache and logs cleanup** - IntelliJ IDEA
      automatically cleans up any cache and log directories that were
      last updated more than 180 days ago. This process doesn’t affect
      system settings and plugin directories. You can initiate the
      process manually via Help | Delete Leftover IDE Directories.

    * **Missing plugin notifications** - If your project uses a
      framework that works in IntelliJ IDEA via a plugin, the IDE will
      notify you and offer to enable it directly from this notification.

    * **New navigation option in Preferences/Settings** - Simplified
      navigation in Preferences/Settings by adding arrows to the top right-
      hand corner of the window. They allow you to quickly jump back and
      forth between the sections you’ve opened.

    * **Update notifications from the Toolbox App** - When any product
      updates appear in the Toolbox App, your IDE will now inform you.
      If there is a new version available for download, you’ll be able
      to upgrade to it right from IntelliJ IDEA. Toolbox App 1.20.8804
      or later is required to use this feature.

    * **Quick access to Power Save mode** - Added a Power Save mode to
      help you extend the battery life on your laptop. To make this mode
      easier to access, you can manage it from the status bar.

    * **Accessibility updates** - Added a number of helpful updates for
      coding with the enabled screen reader mode on Apple macOS.
      Available suggestions for code completion, the content of the
      selected combo box and combo box lists and the results of your
      queries in Search Everywhere have been voiced.

    * **Improved UI responsiveness** - Managed to avoid UI blocks when
      using context menus, popups and toolbars. Moved certain operations
      that require indices off the UI thread, which should help prevent
      freezes in other situations.

  * **Java**

    * **Visibility-based color settings** - It is now easier to
      distinguish between public, protected, and private Java members
      (methods, fields, and classes) as you can configure the color
      settings for them in Preferences/Settings | Editor | Color Scheme
      by unfolding the Visibility node.

    * **New JavaFX project wizard** - Configuring a new JavaFX project
      just got easier. In just two steps, you can add a project SDK,
      language, desired build system, test framework and one or several
      frequently used libraries, which come with short descriptions.

    * **New Inspections** - Added a range of new inspections to address
      particular use cases in Data Flow Analysis. The new Write-only
      object inspection warns you when you modify an object but never
      query it for some custom classes defined in your project and the
      standard library.

  * **Kotlin**

    * **Automatic ML-completion** - Starting from this release, Kotlin
      code completion works based on the machine learning mechanism by
      default. Code suggestions are prioritized more carefully as the
      IDE relies on the choices of thousands of real users in similar
      situations.

    * **Run tests before code analysis finishes** - Previously you had
      to wait for code analysis to finish before you could start running
      your tests. In the current version, you can launch tests
      immediately after opening the file by clicking the Run test icon
      in the gutter.

    * **Debugger updates** - Introduced some useful improvements and
      updates to the coroutine agent in the debugger. The coroutines
      agent is now available via the Coroutines tab in the Debug tool
      window. It works for Java run configurations with a dependency on
      kotlinx.coroutines and Spring and Maven run configurations.

    * **More room for action when indexing** - While the IDE is
      indexing a project you can now run and debug your application.
      The buttons associated with Run/Debug Configuration are active
      when indexing.

    * **Kotlin support for Microsoft Windows Subsystem for Linux (WSL) 2
      and Run Targets** - In IntelliJ IDEA 2021.1, WSL 2 support and
      the Run Targets feature was introduced. In this release, you can
      use these features for Kotlin.

    * **Inspection to simplify call chain on collection type** - In
      this release, a useful inspection that helps you simplify the
      syntax and combine several calls into one when calling methods in
      a chain inside a collection has been added.

    * **Intention action for buildString conversion** - In previous
      versions, you manually typed buildString to customize your code.
      The new intention action allows you to apply it automatically in
      just two clicks.

  * **Scala**

    * **Better Scala 3 support:**

      * Indexing is now fast, precise and version-agnostic.

      * You can now create both sbt and .idea-based Scala 3 projects, as
        well as Scala 3 SDKs, normally.

      * The editor can handle significant indentation better.

      * Added support for Scala 3 constructs in Scala 2 projects (-
        Xsource:3).

      * There are improvements in the debugger, formatter, REPL, auto-
        import, enums, extension methods and many others.

    * **Compiler-based highlighting** - Added the ability to use the
      Scala compiler for error highlighting. Please note that, even
      though the compiler-based approach is more precise, it is slower,
      requires more resources, and doesn't support features such as type
      diffs, quick-fixes, and inspections. So unless there are lots of
      false errors in the code, the built-in error highlighting is
      recommended.

  * **JavaScript**

    * **Reload pages in browser on save** - You can now automatically
      update the pages in a browser as you edit and save your HTML, CSS
      and JavaScript files. All browsers are supported.

    * **Rename refactoring for React useState hooks** - You will
      no longer need to waste time on refactoring useState values
      and functions one by one – IntelliJ IDEA can now rename
      both for you.

    * **Auto-import for require()** - The IDE can now add missing
      import statements as you complete CommonJS modules – required
      imports will be inserted on code completion.

  * **Profiler**

    * **Support for Async profiler on Microsoft Windows and Apple M1**
      - IntelliJ IDEA now fully supports the profiler on Windows and
      Apple M1, in addition to Linux and non-M1 macOS, which means you
      can now use it in most environments.

    * **Support for Async profiler 2.0** - IntelliJ IDEA now has
      support for Async Profiler 2.0. It works via the new Async
      Profiler configuration, combining the power of the CPU and
      Allocation profilers.

    * **Support for a sunburst diagram** - In IntelliJ IDEA 2021.2,
      when you double-click an item on the Classes tab, the Retained
      Objects tab shows data for the selected item in the form of a
      sunburst diagram. If you are more used to analyzing data displayed
      in a tree, you can now find it in the Dominator Tree tab.

  * **Build tools**

    * **JLink artifacts** - If you want to create a custom JDK that
      contains only the modules and dependencies you need when working
      on a Jigsaw project, you can add new JLink artifacts to your
      project in the Project structure window.

    * **Redesigned Gradle configurations** - Reworked the UI of the
      Gradle Run/Debug Configurations. The basic parameters are now
      conveniently grouped in one screen. You can add more options based
      on your needs.

    * **Faster indexing for projects in WSL 2** - For project files
      stored in WSL 2, you use a daemon that transfers the content of
      the files between Linux and Windows via a socket. This allows you
      to increase the indexing speed, as it depends on how fast the IDE
      reads the file content. Depending on the language you use, the
      speed increase may vary.

    * **Ant support in WSL 2** - It is now possible to execute Ant
      tasks in WSL 2.

  * **Version control**

    * **Changes to pre-commit checks:**

      * Expanded the list of possible pre-commit actions with the
        ability to execute tests. When you tick the Run Tests checkbox
        in the Before Commit section, your IDE will test the applied
        changes and notify you if anything goes wrong.

      * Added the ability to customize the Analyze code and Cleanup
        options by clicking Choose profile next to them.

      * The progress and results of all the pre-commit checks appear
        in the Commit area, without disturbing you with additional
        modal windows.

    * **GPG signature** - This release offers a way to secure your
      commits by enabling Git commit signing with GPG.

    * **Changes instead of Default Changelists in new projects** - You
      no longer need to use Default changelists as the name for the node
      that stores uncommitted changes in new projects. Starting from
      version 2021.2, it is called Changes. Additionally, Git operations
      will no longer trigger automatic creation of changelists.

    * **Unified Show Diff** - IntelliJ IDEA displays the difference
      between the initial and changed files in the editor by default, no
      matter where you’ve invoked the Show Diff action. If tracking
      changes in a separate window is more convenient to you, just drag
      the desired file from the editor.

    * **Text search in Local History revisions** - You can quickly find
      the necessary text in the Local History revisions by typing the
      query in the search field in the Local History dialog.

    * **Terminal**

      * **New Terminal options** - The in-built terminal now allows you
        to select the cursor shape. It also offers support for Use
        Option as Meta key, which lets the Option ⌥ key on the
        keyboard act as a meta modifier that can be used in combination
        with other keys. For example, you can use the following
        shortcuts:

        * ⌥+F – go to the next word.

        * ⌥+B – go back a word.

        * ⌥+D – delete the next word.

  * **Debugger**

    * **Preview Tab now works in Debugger** - Previously when you
      stopped at a breakpoint, stepped through the code, navigated
      between frames or used the "prev/next frame" actions, the IDE
      opened the files in multiple tabs. In this release, you can enable
      the preview tab feature for Debugger in Settings/Preferences |
      General | Editor Tabs. If it is on, these files will open
      successively in one tab.

  * **Frameworks & Technologies**

    * **Microservices diagram** - IntelliJ IDEA lets you display
      microservice interactions in a diagram, which you can build by
      clicking the respective icon in the Endpoints tools window. This
      new diagram offers the option to track which client calls a
      particular service and navigate to this call in your code. The
      diagram is available in Java and Kotlin projects if you use
      Spring, Micronaut, Quarkus or Helidon.

    * **Automatic migration from Java EE to Jakarta EE** - The new
      Migrate... refactoring helps you quickly and painlessly migrate a
      project or module from Java EE to Jakarta EE. After you initiate
      it, the Refactoring Preview shows all the found usages of Java EE
      imports. You can then check through and finalize the process.

    * **Automatic download of shared indexes for new Spring Boot
      projects** - When you create a new Spring Initializer project,
      the IDE will download shared indexes automatically, reducing
      indexing time and speeding up IDE startup.

    * **Support for JPA Entity Graph** - Added support for an Entity
      Graph which you can define with the @NamedEntityGraph annotation.
      Your IDE allows you to specify a unique name and the attributes
      (@NamedAttributeNode) for this annotation using code completion,
      error detection and navigation to the related entity by clicking
      on an attribute.

    * **Support for cache annotations in Micronaut and Quarkus** -
      Cache annotations for Micronaut and Quarkus are now supported in
      the IDE. Added gutter navigation between cache name usages, as
      well as the ability to use Find usages and the Rename refactoring
      for cache identifiers.

    * **Better microservice navigation support in JavaScript and
      TypeScript** - URL navigation in JavaScript and TypeScript has
      been significantly improved. For client-side code (for Angular or
      Axios), URL references have been added for the $http service and
      HttpClient request method calls and URL completion works based on
      available server-side frameworks and OpenAPI specifications. For
      server-side, Express users can see Route handlers in the Endpoints
      tool window and search for Express route declarations via Navigate
      | URL Mapping.

    * **gRPC endpoints displayed in the Endpoints tool window** - Added
      support for yet another framework – gRPC. For now, it is
      possible to see the gRPC endpoints in the Endpoints tool window.

    * **Ktor integration** - Ktor, a web application framework for
      creating connected systems, is bundled with IntelliJ IDEA
      Ultimate. Right from the welcome screen, you can create a new Ktor
      project for developing server-side or client-side applications and
      configure the basic project settings and various features
      supported by Ktor.

    * **Protocol Buffers plugin maintained by JetBrains** - The
      Protocol Buffers plugin is now bundled with IntelliJ IDEA Ultimate
      and the JetBrains team fully maintains it.

  * **Docker**

    * **Work with Docker via SSH** - It is now possible to connect to
      Docker via SSH.

    * **Services synchronization** - It is now possible to display
      Docker Compose applications in the Services tool window even if
      they are not running.

    * **New icons for service states** - Added new icons for the
      different states of your Docker Compose services. To get
      accustomed to them, you can read the tooltips that appear when you
      hover over each icon.

    * **Improved logs** - Implemented some changes to the Docker
      Compose logs. Every service node features a log and the container
      logs include the option to show timestamps and previous sessions.

    * **More options in Run/Debug Configurations** - Additional options
      for Docker Compose are now available in Run/Debug Configurations.
      You can Enable BuildKit, Enable compatibility mode and Specify
      project name when you click Modify options. When you name your
      project, you can call it whatever you want and it won’t inherit
      its name from the folder that the Docker Compose application is
      located in by default.

    * **New actions for containers** - Added new buttons that allow you
      to start, pause, unpause and restart your containers. In addition
      to this, you can apply the actions to several containers at once.

    * **Smart way to delete images** - When you delete Docker images
      with dependencies, you can now specify which dependencies you want
      to get rid of and which should stay.

    * **New Networks and Volumes nodes** - Added two new nodes to the
      Services tool window: Networks and Volumes. The first node
      contains all the networks that are not related to the Docker
      Compose application. The second includes all the Docker Volumes.
      It is easy to delete volumes in the same way as you would images.

    * **Support for version 3 of Docker Compose** - Added support for
      version 3 of the Docker Compose file format. As a result, IntelliJ
      IDEA now correctly validates the options available in v3 and code
      completion works for them.

  * **Kubernetes**

    * **Support for alias in Helm chart dependencies** - You can now
      use the alias field that belongs to the dependencies section in
      Chart.yaml (api v2) or in requirements.yaml (api v1). This field
      states an alternative name of the current dependency. You may need
      to use alias if an existing dependency is used several times and
      you want to distinguish between these usages. In addition, if the
      chart name uses symbols not applicable in GoTemplate identifiers,
      alias can also help you fix it.

    * **Custom namespaces** - Sometimes when you work with a Kubernetes
      cluster, you will be granted access to particular namespaces, but
      you won’t receive the list of all of the cluster namespaces. In
      this case, you can now specify the list of available namespaces in
      Preferences / Settings | Tools | Kubernetes.

    * **Favorite namespaces** - Made it easier to manage multiple
      namespaces and quickly find the ones you need the most. It is now
      possible to mark your favorite namespaces with a star. They will
      then appear at the top of the list, while the remaining namespaces
      will be sorted alphabetically.

  * **Database tools**

    * **DDL data source** - It is now possible to generate a DDL data
      source based on a real one. The DDL files will be created on the
      disk and the new data source will be based on them. That way
      you’ll always be able to regenerate these files and refresh the
      DDL data source.

    * **Managing the popping up of Services tool window** - When a
      query returns no data, there’s no need for the Services tool
      window to appear if it was hidden already. You can now define
      which operations make the Services tool window appear on your own.

    * **Completion of fields and operators** - Code completion now
      works for various types of fields and operators in the
      MongoDB console.

  * **QA tools**

    * **Generate Test Data** - Being able to insert a random email,
      name, or phone number is important when developing unit tests. As
      a part of the Test Automation Kit, the new Test Data plugin brings
      a lot of useful actions that can help you generate random data.
      Use the Generate menu (Cmd+N) to see all available options. If you
      need a specific format, you can always create your own custom data
      format based on regular expression or Velocity templates. All
      custom data types are available in bulk mode and can be shared
      within your team.

  * **Space integration**

    * **Space job statuses in the Git log** - Added icons for Space job
      statuses in the Log tab of the Git tool window to make it easier
      to track a job’s progress by just looking at the commits list.
      If you click on an icon, the IDE will open a popup with the
      automation info for that job.

    * **Mention teammates** - It is now more convenient to communicate
      with teammates in Space code reviews, as you can mention them with
      @ followed by the colleague’s name. This minor but helpful
      feature works in the timeline and in code comments.

    * **Branch display in code reviews** - Your IDE can now show
      related branches in the selected code review. You can see the list
      of branches that contain the commits made while working on the
      current issue in the Details tab.

  * **Collaborative development**

    * **Synchronized code completion** - You can now understand the
      logic behind your teammate’s actions even more precisely, as
      you’ll see what code completion suggestions the person you are
      following uses. This feature works when you are in Following mode
      during your Code With Me session.

    * **Undo your actions** - IntelliJ IDEA 2021.2 features a re-worked
      undo functionality that significantly improves the collaborative
      programming experience. The revamped undo logic enables both
      guests and the host to reverse their individual changes in the
      code. This means that upgrading to the 2021.2 version will allow
      you to avoid unpleasant situations where one developer
      accidentally deletes changes made by their peers. This improvement
      is particularly useful in pair and mob programming scenarios.

    * **Share any screen during a collaborative session** - Added
      screen sharing. Participants can share an application window from
      their computer screen, not just your JetBrains IDE, to help
      participants collaborate better.

    * **Forward ports to your pair programming peers** - Added the
      ability to share specific open ports with participants via an
      integrated proxy. So, if a host runs applications on a specific
      port, the guests can access it via a local host on their machine.

  * **Other**

    * **Localized UI in Chinese, Japanese, and Korean** - Starting
      with this version, you can enjoy the fully localized IntelliJ
      IDEA UI in Chinese, Korean, and Japanese. Localization is
      available as a non-bundled language pack plugin, which can be
      easily installed in your IDE.

    * **Android plugin update** - The Android plugin has been upgraded
      to v4.2.0.

    * **Unbundled plugins** - After analyzing how often you use several
      plugins, some of them, including Resource Bundle Editor, Drools,
      JSP Debugger Support, CoffeeScript, Spring Web Flow, Spring OSGI,
      Arquillian, AspectJ, Guice, Helidon, Emma and EJB have been
      unbundled. If you still need any of these plugins, you can install
      them manually from JetBrains Marketplace.

#### Fixes

  * Addressed the issues with formatting lists so that Enter, (Shift)
    Tab and the Reformat action now all work properly.

  * Fixed an issue when local variables were not used after passing a
    suspension point and disappeared in the Variables view of the
    Debugger tool window.
### Updates in 2021.1

#### Features

  * **Space integration** - Integration with Space is now available out
    of the box. Once you log in, you can view and clone project
    repositories, review your teammates’ code and write Space
    Automation scripts.

  * **WSL 2 support**

    * **WSL 2 support for Java projects** - You can now work with Java
      projects located in WSL 2 in IntelliJ IDEA. The IDE can detect
      JDK installations, install JDKs and compile and run Maven and
      Gradle projects as well as projects that use the IntelliJ IDEA
      build system.

  * **Collaborative development** - Code With Me is now included out of
    the box, it adds support for video and voice calls.

  * **Run Targets** - You can now run, test, profile and debug your
    application in Docker containers or on remote machines.

  * **User experience**

    * **Built-in HTML preview** - The new built-in browser preview
      allows you to preview HTML files quickly. If you make any changes
      in HTML or if you change the linked CSS and JavaScript files, the
      preview will update on the fly.

    * **Customize external dependencies in the search scope** - You can
      now set External Dependencies to be either included in the scope
      or excluded from it.

    * **Quick access to recent projects on Microsoft Windows** -
      Updated the support for Windows jump lists and made it possible to
      open your recent projects by right-clicking on the IntelliJ IDEA
      icon on the taskbar or the Start menu.

    * **Improved accessibility** - Added more labels to UI elements on
      the Welcome screen, in the Project Structure view and in the VCS
      log. These elements, as well as gutter icons, are now read out
      correctly when a screen reader is enabled.

    * **Syncing high-contrast mode in Windows with the IDE theme** -
      Your IDE will now automatically apply the high-contrast theme when
      you launch the IDE for the first time if you use the high-contrast
      mode on Windows.

  * **Version control**

    * **Better Pull Requests support** - Pull request creation now
      takes less time: just click the + icon in the Pull Requests view
      and fill in all the details. If you double-click on any file in
      the Files tab, the IDE will open the in-editor diff. You will also
      find support for pull request templates, which contain the
      description text for your pull requests.

    * **Support for Git commit templates** - Added support for Git
      commit templates. If you want to create a custom commit message,
      you can use a template and fill it in with the information you
      feel is important. The IDE will then display this text as an
      initial commit message.

    * **Configure a profile for pre-commit inspections** - Improved the
      ability to choose a code inspection profile before committing
      changes to VCS.

    * **Get files from another branch** - You can now get a file from
      another branch in the Compare with branch dialog.

    * **Save to Shelf** - The new Save to Shelf action allows you
      to copy your changes to the Shelf while keeping them in the
      local changes.

  * **Editor**

    * **Font weight options** - You can now fine-tune the weight of
      your main and bold font styles.

    * **Maximize tabs in the split view** - Whenever several tabs
      that split the editor vertically are open, you can double-click
      either of them to maximize the editor window for that specific
      tab. To bring the window back to its original size, simply double-
      click it again.

    * **JSONPath support** - Added support for JSONPath expressions
      with the Goessner or Jayway syntaxes.

    * **JSON Lines support** - Added support for the newline-delimited
      JSON Lines format, which is used for working with structured data
      and logs. The IDE will recognize .jsonl, .jslines, .ldjson, and
      .ndjson file types.

    * **Profiler** - Reworked the profiler UI. The Home window has
      become more informative and attaching a profiler to the process is
      now faster. Added two new actions that can be accessed by right-
      clicking on a running application:

      * **Capture Memory Snapshot** - For taking *.hprof snapshots of
        your applications

      * **CPU and Memory Live Charts** - Which opens a tab with
        visualization tools for tracking resource consumption.

  * **Java**

    * Added support for Java 16.

    * **New inspections for data flow analysis** - IntelliJ IDEA can
      now warn you when arrays are initialized with a negative size. It
      can also recognize the Arrays.copyOf() and Collection.toArray()
      methods. The IDE also supports methods for unboxing or converting
      integers, such as Integer.longValue and Byte.intValue.

    * **Other new and improved inspections:**

      * You can now avoid unnecessary casts by narrowing the for-each
        loop parameter type.

      * You can now simplify code syntax by swapping .filter() and
        .map() calls if the filter uses the same value as produced by
        the mapper. Updated the inspection that replaces StringBuffer
        with StringBuilder to cover more cases.

    * **Formatting for chained builder methods** - Added new formatting
      options for chained builder methods help improve their
      readability.

  * **Kotlin**

    * **Faster highlighting of code problems** - IntelliJ IDEA now
      highlights code problems almost instantly, the code completion
      mechanism now works quicker and the IDE’s responsiveness to
      freezes has been improved.

    * **Improved code completion** - The code completion mechanism in
      Kotlin now offers functions that require type parameters.

    * **Better code coverage** - The code coverage runner now fully
      supports Kotlin in inline functions and coroutines.

    * **Refactoring improvements** - Reworked the UI for the Change
      Signature refactoring and added a new checkbox that lets you set
      the added parameter as the default one.

    * **Debugger updates for Kotlin** - The IntelliJ IDEA debugger can
      now evaluate get expressions in Kotlin and display them in the
      Variables view. Your IDE now also allows you to jump to the source
      from there.

    * **UML class diagrams for Kotlin** - UML class diagrams now work
      for Kotlin code compiled to the JVM and can display both Java and
      Kotlin classes.

  * **Scala**

    * **Kinds in type diffs** - The type diff tooltip now
      supports kinds.

    * **Machine learning completion** - Added support for Scala code
      completion based on machine learning.

    * **Phases and units in compilation charts** - Compilation charts
      can now show phases and units, so you can gain even deeper insight
      into your compilation.

    * **IntelliJ Platform plugin template** - The sbt-idea plugin now
      makes it possible to develop IntelliJ Platform plugins using Scala
      and sbt. Added a built-in Project Wizard template to make the
      process even easier.

  * **Build tools** - Added the ability to customize settings when
    importing Maven projects.

  * **Frameworks & Technologies**

    * **New inspection to replace http://** - Your IDE can now
      highlight http:// protocol usages and offer to change them to
      https://. You can add URLs to the list of ignored URLs or disable
      the inspection for the whole project or parts of it the
      Preferences/Settings.

    * **Improved HTTP Client** - The HTTP client has had UI and UX
      updates in this release. You can collapse the returned HTML,
      JSON, or XML, as well as copy its body, hide line numbers, choose
      the display format and quickly scroll to the top and the bottom
      of the response.

    * **SSL support in the HTTP client** - It is now possible to
      configure SSL settings in the HTTP client if you use SSL client
      authentication for https:// protocols.

    * **New project wizards for JVM frameworks** - Reworked the wizards
      for creating Spring, Micronaut, Quarkus and MicroProfile projects.
      The new UI is neater and the project creation process is more
      straightforward.

    * **Improved JPA support** - Added redesigned icons to the gutter
      for projects that include JPA entities. These icons are clickable
      and contain a list of the most useful actions for entities and
      their attributes. This release also improves JPA support for
      Kotlin and multi-module projects.

    * **JPA Console for Jakarta EE 9** - It is now possible to use
      the JPA console for writing and running JPQL queries in Jakarta
      EE 9 projects.

    * **New color scheme for UML Diagrams** - UML Diagrams now
      come with a new color scheme that makes them look neater and
      more readable.

    * **Swagger Improvements** - Swagger now supports specifications
      with external file references ($ref). The Structure view for
      specification files now features more nodes, including Security,
      Callbacks and Examples.

    * **Selenium page object generator** - Added support for an
      experimental tool for detecting DOM elements of a web application.
      Before using it you need to install the Selenium UI Testing
      plugin. The page object generator supports Java, Kotlin and Groovy
      and frameworks such as Selenium, FluentLenium, Selenide, Geb,
      Atlas, and JDI Light. You can also customize the code templates of
      each framework.

  * **Kubernetes**

    * **Quickly delete resources** - It is now possible to delete all
      the cluster resources in the current context from the editor.

    * **Support for Kustomize 3.7.0 components** - You can now choose
      the new Kustomize 3.7.0 components in the Kustomize version drop-
      down list in the Settings/Preference.

    * **Support for kind: List** - The IDE now supports kind: List. In
      each resource from the list, you can rename labels and use code
      assistance and navigation via the gutter icons. You can also
      convert a List to a multi-document YAML file and vice-versa.

    * **Non-default values for Helm projects** - It is now possible to
      create custom values.yaml files.

  * **Docker**

    * **Improved Run/Debug Configurations** - The Run/Debug
      Configuration dialog is now more concise and adjustable.
      Added support for all the existing options for Docker
      Compose. Code completion now works for Dockerfiles Run
      Options and Image ID or name.

    * **BuildKit support** - Added experimental support for BuildKit,
      which speeds up project builds. Improved building named stages
      separately from the whole multi-stage Dockerfile.

    * **UI enhancements in multi-stage Dockerfiles** - If you use multi-
      stage Dockerfiles, you can now fold stages and see a distinct
      separator line between them.

    * **Cancel Docker run** - It is now possible to stop your running
      Dockerfile quickly.

    * **Environment variables and macros for Docker mounts** - When
      using bind mounts, you can now enter a path to a directory on the
      host machine faster. The completion mechanism now allows you to
      select macros and environmental variables in the Bind mount option
      in Run/Debug Configurations.

    * **Images completion in Dockerfiles** - Code completion now works
      for image names.

  * **JavaScript**

    * **Improved support for Stylelint** - Inspecting your CSS code
      with Stylelint is now easier. Hover over a problem in your file or
      place the caret on it and press Alt+Enter, then select Stylelint:
      Fix current file. You can also now specify a path to the
      configuration file under the corresponding field in
      Preferences/Settings.

    * **Bundled MDN documentation** - MDN documentation is now bundled
      with IntelliJ IDEA which will help prevent connectivity issues
      with the MDN website and make in-editor documentation in your
      HTML, CSS, and JavaScript files display more quickly.

    * **Selector specificity for style sheets** - When working with
      style sheets, you can now check the specificity of your selectors.

  * **Database tools**

    * **UI for grants** - Added a UI for editing grants when modifying
      objects. The Modify user window now has a UI for adding grants to
      objects. These updates are available for PostgreSQL, Amazon
      Redshift, Greenplum, MySQL, MariaDB, DB2, Microsoft SQL Server,
      and Sybase.

    * **Context live templates** - Added a solution for generating
      simple statements straight from the database explorer – live
      templates. You can add your own templates or edit the existing
      ones in the SQL node.

    * **Straightforward actions** - Simplified navigation: Go to
      declaration (Ctrl/Cmd+B) invoked on an object in SQL now takes you
      to the DDL, not to the database tree. Also added a shortcut for
      the Select in database tree action: Alt+Shift+B for Windows/Linux
      and Opt+Shift+B for Apple macOS.

    * **Better sorting** - Improved data sorting:

      * A new ORDER BY field works similar to the WHERE field (which was
        called Filter before): enter a working clause to have it applied
        to the query of the grid.

      * If you want to use sorting on the client side (which means
        IntelliJ IDEA will not rerun the query, but will sort the data
        within the current page instead), uncheck Sort via ORDER BY.

      * The sorting is not ‘stacked’ by default. If you click on the
        name of a column you want to use to sort data, the sorting based
        on other columns will be cleared.

    * **Easy copy-paste of data sources** - You can copy, cut, and
      paste data sources using the shortcuts: Ctrl/Cmd + C/V/X.

      * When you copy a data source, the XML is copied to the clipboard,
        which you can then share via a messenger. You can also use the
        Paste action to paste a piece of XML from somewhere else.

      * If you cut and paste a data source inside one project, it will
        just be moved, no password required. But the password is
        required in all other cases.

    * **Edit data in MongoDB** - Added a crucial feature for working
      with MongoDB: starting with this version, you can edit data in
      MongoDB collections. A statement preview is now also available.

      * Added the ability to change the type of a field from the UI.
        This can be done either from the context menu of the field or in
        the value editor.

  * **Other**

    * **Android** - IntelliJ IDEA now supports all Android Studio
      4.1.1 updates.

    * **Support for bnd-maven-plugin** - You can now import OSGI facet
      settings from the bnd-maven-plugin.
### Updates in 2020.3

#### Features

**User experience**

  * **New Welcome screen** - The IntelliJ IDEA welcome screen has been
    redesigned. The Initial wizard has been replaced with a quick-access
    screen containing four tabs: Projects for managing your projects,
    Customize for setting up the IDE interface, Plugins for plugin
    installation, and Learn IntelliJ IDEA for access to help and
    learning resources.

  * **Learn IntelliJ IDEA** - Open the Learn IntelliJ IDEA page right
    from the Welcome screen. You can find numerous resources to get
    acquainted with your IDE. Select an interactive course from the
    list, and the IDE will then open a specific learning project to
    study the topic step by step in a real environment. Follow the
    instructions in the Learn view to test your new skills on actual
    coding samples.

  * **IDE theme synced with OS settings** - IntelliJ IDEA can now
    synchronize its theme with your OS theme.

  * **Reader mode** - Read-only files and files from external libraries
    are now opened by default in Reader mode. In this mode, comments
    look like formatted text and font ligatures are enabled to help make
    the code more readable to users.

  * **LightEdit improvements** - This release has improved the UX for
    LightEdit mode. To open files in LightEdit mode from the command
    line, you now type -e (--edit) followed by the name of the file you
    want to open, or omit the filename to reopen your previous session.
    A new status bar in the LightEdit window provides access to the full
    set of IDE features.

  * **Better spelling and grammar checkers** - Now when you press
    Alt+Enter, the IDE invokes suggestions to correct your grammar or
    spelling. This release has also started using a new version of the
    LanguageTool grammar checking engine, which improves text reviews in
    English and adds support for 10+ more languages.

  * **Search Everywhere updates** - Added a new Git tab to the Search
    Everywhere dialog. You can now find commit hashes and messages,
    tags, and branches in the Search Everywhere dialog. You can also
    perform simple mathematical calculations in the search field.

  * **Preview tab** - You can now open a file in a preview tab with a
    single click. When you open a file in a preview tab, its name is
    displayed in italic. If you start editing this file, it will cease
    to be a preview and will become an ordinary file. If you single-
    click another file to open it in preview mode, it will appear in the
    same tab, replacing the previously opened one.

  * **Linux emoji picker** - Added an emoji picker for Linux. To open
    the emoji picker, press Ctrl+Alt+;. You can filter emojis by
    category, change their skin tone, and search for emoji by name. The
    emoji picker fully supports keyboard navigation.

  * **Update JDK from inside the IDE** - Starting from v2020.3, it is
    possible to migrate to the latest JDK from a popup that appears
    whenever an update is available. You can choose whether you want to
    install it or skip it.

**Editor**

  * **New Extract method layout** - This release has made it easier to
    extract Java methods.

  * **More intuitive access to Rename settings** - With the new Rename
    preferences that appear in an inlay hint, it is now possible to
    select whether you want to rename occurrences in comments and string
    literals or in printable text.

  * **Drag and drop tabs** - If you want to have several tabs open
    while working on a project, you can now drag and drop file tabs to
    split the editor either horizontally or vertically. This release
    also introduced the Open in Right Split action that splits the
    editor vertically upon opening your file. Invoke the action from the
    Project view or other navigation popups, such as Recent Files,
    Search Everywhere, and Navbar.

  * **Pinned tabs improvements** - In v2020.3 the new pin icon is shown
    for pinned tabs. When you click on it, you unpin the file. You can
    also pin and unpin your tabs by dragging and dropping them over
    other pinned or unpinned files. If you tend to open a lot of tabs,
    you can keep all your pinned tabs in one row.

  * **Improved Markdown editing and preview** - The Markdown tool now
    has a better preview UI and improved UX. You can customize Markdown
    format in the settings. The Auto-Scroll Preview button in the top-
    right corner of the editor allows you to sync scrolling of the
    preview pane and the editor. This release also added support for
    Mermaid.js.

  * **Setting IntelliJ IDEA as the default application for opening
    files** - Now you can set IntelliJ IDEA as a default application to
    open files.

  * **Multiple files per template** - In
    Preferences/Settings|Editor|File and Code Templates, it is now
    possible to add a template that creates several files.

**Debugger**

  * **Interactive hints** - When your application is running in debug
    mode, you can click on variables to get inline hints that contain
    related fields that you can change the values of. Click Create
    Renderer inside this new inline hint to open a dialog where you
    will be able to configure the display of inline values in all
    debugger views.

  * **Inline watches** - Added a new type of watch expressions which
    will be associated with a particular context and shown right inside
    the editor. You can manage your inline watches in a new Inline
    Watches node in the Variables tab of the Debug tool window.

  * **Basic memory profiling in Java debugger** - Basic profiling
    options are now available while the debugger is running.

  * **Better debugging for Gradle** - Now only one tab opens per
    debugging session for a Gradle task. It contains Frames and
    Variables, as well as the Console output. Debugger controls now work
    correctly.

**Profiler**

  * **Updated Profiler tool window** - In the redesigned Profiler tool
    window, you can attach the profiler to a running application. In the
    list of all running Java processes, press Enter to invoke Attach
    Profiler to a Process and select which integrated tool you want to
    use. In the Recent Snapshot area, you can quickly access any
    previously created snapshots.

  * **Flame graph search** - The flame graph search is now more user-
    friendly, featuring a visible search field, up/down arrows for fast
    navigation, a filter that allows you to search in the whole flame
    graph, or just in a specific subtree.

  * **Easy access to .jfr and .hprof** - There is no more need for
    working around opening .jfr and .hprof files. To open any file of
    these types quickly, drag and drop it in the editor, open it with
    File|Open, or double-click it in the Project view.

**Version control**

  * **Git stage support** - You can now stage changes directly from
    your IDE. You can also stage changes right from the gutter or in the
    Diff view.

  * **Rearranged VCS menu** - The VCS menu is now named according to
    the version control system that you are currently using. This
    release has made the menu more concise, removing all but the most
    useful actions for versioning your project.

  * **Improved branches** - When you create new branches, the IDE
    automatically corrects unaccepted symbols in branch names. This
    release has reworked the context menu for the current branch to show
    the related actions. For remote branches, this release has renamed
    the Merge into Current and Rebase Current onto Selected actions as
    Pull into Current Using Merge and Pull into Current Using Rebase.

**Run Configurations**

  * **Updated Run/Debug configurations** - Rearranged Run/Debug
    Configurations to make it neater, with the most frequently used
    settings now located in one screen.

  * **Store and share run/debug configuration templates** - In IntelliJ
    IDEA 2020.3, you can store run configuration templates as XML files
    and then share them with teammates via Git or another VCS.

**Collaborative development**

  * **Code With Me EAP** - IntelliJ IDEA 2020.3 supports Code With Me
    (EAP) – a new service for collaborative development and pair
    programming. Code With Me enables you to share the currently
    opened project in your IDE with others, and work on it together in
    real-time.

**Java**

  * **Conversion of records** - Added a new intention action that
    allows you to convert records to classes. It can be useful when you
    want to downgrade your codebase.

  * **Full support for sealed classes** - This release has added
    completion, code insight, and refactorings for sealed classes. When
    you use the sealed modifier, you declare a class as a sealed class
    that allows you to define which other classes can extend it and
    which classes to prevent from being extended. The subclasses can
    either be final, non-sealed, or sealed.

  * **Machine Learning-based code completion** - Code completion
    suggestions are now based on machine learning technology.

  * **Shebang (#!) support** - If your files use a Shebang mechanism,
    IntelliJ IDEA automatically identifies this and allows you to open
    them correctly and use code insight. Highlighting for files with
    shebang (#!) also works.

  * **New Inspections** - IntelliJ IDEA 2020.3 introduced new
    inspections that can help you improve your code. One of the most
    important inspections is Commented out code which lets you either
    delete or uncomment lines that have been commented out.

  * **Better code completion** - When you create a class from scratch,
    completion now offers class, interface, enum, or record after the
    top-level Public declaration. If you use the String.toUpperCase or
    String.toLowerCase methods, you are now prompted to use Locale.ROOT.
    When you are about to call String.getBytes(), the IDE suggests using
    the UTF_8 charset.

**Kotlin**

  * **New types of inline refactorings** - Cross-language conversion is
    now possible, meaning you can inline Kotlin elements from Java. You
    can also inline-refactor the also, let, run, apply, and with scope
    functions. This release also improved the inlining of lambda
    expressions for the IDE to analyze their syntax more thoroughly and
    format them correctly.

  * **Structural search and replace** - Introduced support for
    structural search and replace (SSR) actions for Kotlin. You can find
    and replace code patterns, taking the syntax and semantics of the
    source code into account. Filters for variables allow you to narrow
    down your search.

  * **New infrastructure** - The Kotlin IDE plugin release cycle is now
    synced with the IntelliJ IDEA release cycle. This release has also
    moved the Kotlin IDE plugin to a new repo that is combined with the
    IntelliJ IDEA codebase to minimize the time it takes us to pick up
    platform changes.

**Frameworks and technologies**

  * **Reworked Endpoints tool window** - This release significantly
    improved the Endpoints tool window. It features a more convenient
    display of endpoints grouped by module with an option to make the
    list more compact.

  * **cURL conversion** - You can now export an HTTP request to cURL by
    pressing Alt+Enter in the HTTP request editor and selecting the
    Convert to cURL and copy to clipboard option.

  * **Better URL completion** - URL completion is now more informative,
    with framework icons, HTTP methods, and source locations of the
    classes or files in which you declared the endpoint. Deprecated URLs
    are displayed with strikethrough formatting.

  * **URL Inlay Hints** - Added fast access to some key actions for
    URLs. Click the globe icon next to the URL to access them. These
    actions are currently available for the Spring MVC, WebFlux, Feign
    Client, JAX-RS, Micronaut, and Retrofit frameworks.

  * **Spring updates** - Added support code insight for Spring MVC
    Functional Routing, RestOperations, Spring WebTestClient, and Spring
    Reactive WebClient. IntelliJ IDEA also displays endpoints declared
    with them. This release also added code completion and navigation
    for Kotlin Spring Security projects.

  * **HTTP request conversion** - If you still use HTTP requests in the
    old HTTP client format, you can easily convert them by clicking
    Convert request to the new format at the top of an open request.
    Other ways to do it are via the context menu in the Project view or
    from the HTTP request editor.

  * **Swagger updates** - Improved code insight in various cases,
    including when you want to reference external definitions with the
    $ref keyword. This release also added Swagger Hub support for you to
    get both public and private specifications from Swagger Hub and open
    them in the Endpoints tool window. Another new feature is that the
    Swagger UI now syncs with the Darcula theme.

  * **Quarkus configurations** - Your new Quarkus project has an
    automatically created run configuration, which means that you can
    run and debug your application right away. If you decide to change
    the settings in Edit Configurations, the Environment section will
    feature only the settings applicable to Gradle or Maven, depending
    on which of these you are using to build your project.

  * **Code completion and @Query annotation for Micronaut Data** -
    IntelliJ IDEA 2020.3 introduces completion for predefined methods
    that you use when creating repository interfaces. This release also
    added support for the Micronaut @Query annotation that helps when
    creating customized queries. With this annotation, you can use the
    JPQL language for code fragments.

**Scala**

  * **Parallel Compilation** - The Scala Compile Server now compiles
    independent modules in parallel. This release adjusted the default
    VM options to support up to 4 compilation threads by default, which
    can speed up compilation a great deal. If your machine has lots of
    CPU cores and a lot of RAM, feel free to tweak the default values to
    improve compilation times even further.

  * **Compilation charts** - To increase the efficiency of parallel
    compilation, you may want to optimize the structure of your project
    modules and the VM options of the Compile Server. This release added
    Compilation Charts to help you with this. Now you can tell at a
    glance when there is potential for optimization.

  * **Enhanced Package Prefixes** - The Scala plugin can now combine
    IntelliJ IDEA’s package prefixes with Scala’s chained package
    clauses and relative imports.

  * **MUnit Support** - The Scala plugin already supports JUnit,
    ScalaTest, uTest, and Specs2. This release has added support
    for MUnit.

  * **Scala 3 Improvements** - The IntelliJ Scala plugin has already
    included support for the upcoming Scala 3 for quite a while. With
    this release the Scala plugin now understands the new syntax for
    main methods.

**JavaScript**

  * **Integrated TypeScript and Problems tool windows** - Integrated
    the TypeScript language service into the Problems tool window and
    removed the TypeScript tool window. This release also moved the
    actions previously available within the TypeScript tool window to a
    dedicated widget on the status bar.

  * **Create a React component from usage** - Place the caret at the
    unresolved React components location, press Alt+Enter, and select
    Create class/function component from the list – the IDE will
    create the relevant code construct for you.

**Kubernetes**

  * **Download logs** - You can now download logs to your local machine
    – just click the Download Log button in the left pane of the
    Services tool window.

  * **Open Console and Run Shell** - Two new actions have been added to
    the left pane of the Services tool window: Open Console for
    connecting containers that include consoles, and Run Shell for
    launching Shell for a pod container. Click the tools icon for quick
    access to the Pod Shell section of the settings.

  * **Load CRDs from Kubernetes** - It is now possible to automatically
    load CRD schemas from an active cluster.

**Database tools**

  * **SQL for MongoDB** - You can now use SQL to query MongoDB
    databases. IntelliJ IDEA 2020.3 supports SELECT queries with clauses
    such as JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, OFFSET, and
    all available MongoDB functions except map, reduce, filter, and let.

  * **Couchbase support and new data extractors** - The IDE now
    supports the Couchbase Query service. This release also introduced
    two new extractors: One-Row that allows you to copy a column to a
    comma-separated string; and SQL-Insert-Multirow, which generates a
    single INSERT statement with multiple new rows to be inserted.

**Other**

  * The upcoming Maven 3.7.0 will feature new POMs with a simplified
    structure. IntelliJ IDEA 2020.3 already includes support for them.

  * The Lombok plugin is now built-in.

  * IntelliJ IDEA can download shared indexes for popular Maven
    libraries directly from JetBrains’ servers. If you develop plugins
    with an IntelliJ Platform SDK, shared indexes will be downloaded
    automatically.

  * Updated the UI to look good in the upcoming Apple macOS Big Sur.

  * A new keymap fully compatible with macOS system shortcuts is
    available.

  * Now uses Git format by default for creating patches.
### Updates in 2020.2

#### Features

**Java**

  * **Java 15 support** - Although the release of Java 15 will take
    place in September, IntelliJ IDEA 2020.2 is already prepared for it.
    Support for the Records feature has been updated and is now in its
    second preview. Also added is basic support for sealed classes and,
    IntelliJ IDEA provides full support for Text Blocks.

  * **Related problems inlay hint** - If you introduce errors by
    changing the signature of a class, method, or field that has
    external usages, the IDE will notify you with an inlay hint. Click
    on the related problems inlay hint, and the IDE will open the Find
    tool window with a list of all the related problems occurring in
    external files.

  * **Ability to create multiple Structural Search and Replace
    inspections** - The IDE allows you to find and, if necessary,
    replace blocks of code that match a specific pattern using
    Structural Search and Replace. With IntelliJ IDEA 2020.2, you can
    create multiple structural search templates as inspections. For each
    SSR inspection, you can specify the severity level, add
    descriptions, and enable or disable them separately.

  * **Pinpointing causes of runtime exceptions** - This release
    supplements exception stack trace analysis with dataflow analysis.
    When you click on the stack trace, the IDE can take you to the exact
    place in your code where an exception appears, and it offers a
    suggestion that can help you find out why it happened.

  * **Better autocompletion for Stream API methods** - IntelliJ IDEA
    2020.2 works even better with the Stream API. Instead of having to
    type 'stream()' and then type the right operation on the stream, you
    can start typing the stream method name within the collection
    itself, and IntelliJ IDEA will insert 'stream()' automatically. This
    works for any stream operation.

  * **Scopes for Introduce Variable** - With IntelliJ IDEA 2020.2,
    the Introduce Variable refactoring can selectively replace
    occurrences of a variable in an intermediate scope. You can now
    choose various options for replacement, rather than being limited
    to choosing only one or all occurrences. The editor highlights
    which occurrences will be replaced with a new variable as you
    hover over each of the choices.

  * **Java live templates clean-up** - You no longer need to search for
    Java-related templates because the new Java node includes all plain,
    surround, other, output, and iterations groups. You won’t get lost
    when searching for a live template to fit your needs. A separate
    Groovy node is available as well.

**Editor**

  * **Problems tool window** - This release adds the Problems tool
    window, which displays the warnings and errors related to the
    current file, along with descriptions of the issues. From this tool
    window, you can right-click on an issue to navigate to the line of
    code where the problem was encountered, and you can fix the issues
    one by one with Alt+Enter.

  * **Inspections widget** - The Inspections widget simplifies
    searching for warnings, errors, and other issues, and lets you
    easily navigate between them by pressing F2 or clicking the arrow
    icons. From the Inspections widget, you can select which issues you
    want to highlight: none, errors only, or all problems.

  * **Intentions preview** - To experiment with the possible outcomes
    of applying intention actions, you can preview their results before
    you actually apply them to your code. Press Alt+Enter to call Show
    Context Actions and select the intention action you need and then
    press Alt+Space on Apple macOS or Ctrl+Shift+I on Windows and Linux
    to display the results preview.

  * **Improved Spellchecker** - The built-in spell checker has been
    improved: it works much faster, filters out irrelevant suggestions,
    and ranks valid suggestions based on context. Additionally, the IDE
    detects the language from the first couple of paragraphs in a file
    and suggests enabling the corresponding language model.

**Version Control**

  * **Full GitHub pull requests support** - The details of open pull
    requests are now one click away in a separate vertical tool window.
    The main editor window shows the conversation, and you can add
    comments directly. Pre-commit check results are displayed at the
    bottom of the window. If you have permission to manage pull
    requests, you can now browse, assign, manage, and merge them, view
    and submit comments, and accept changes right from inside the IDE.

  * **Improved Git actions dialogs** - This release revises the visual
    consistency for Merge, Pull, and Rebase dialogs. It also improves
    the dialogs so that they clearly identify what Git commands will be
    executed, and included some missing options. It also adds --rebase
    and --no-verify to the Pull and Merge dialogs, respectively.

  * **Improved result display for the Compare Branches action** -
    When you compare two branches in IntelliJ IDEA 2020.2, the IDE
    shows their commits in one view by opening their logs in the
    editor. In contrast to the VCS tool window, this view has enough
    space for a full report on what commits are in each branch and
    which files are affected.

  * **Squash and drop local commits from the log** - You can now select
    multiple commits from a local branch and squash them. In the Git
    tool window, open the Log tab, select local commits, and choose
    Squash Commits. If you decide to change the commit message, all the
    changes in those commits will be put into one single commit together
    with the updated message. In addition, you can now drop commits from
    the Git log.

  * **Support for Git installed in WSL2** - IntelliJ IDEA 2020.2 allows
    you to use Git installed in WSL2 when you work with projects from
    Linux or Microsoft Windows file systems. Once you open a project
    from WSL, the IDE automatically switches to Git in WSL and lets you
    use all the related features.

**Frameworks & Technologies**

  * **Jakarta EE 9 support -** This release is ready for the Jakarta EE
    9 release in September, and it already supports all the features
    that are available for Jakarta EE, including CDI, JPA, Batch, Bean
    Validation, JSF, JAX-RS, WebSocket, Servlets, JSP, JSON-P, JSON-B,
    Security, and EJB and JTA specifications.

  * **Java Enterprise project wizard** - If you need to create a Java
    EE 8 or Jakarta EE 9 project, you can now do it using the New
    Project wizard. A new Jakarta EE project is just steps away. Set
    it up by selecting the Java version, build tool, extensions, and
    other options.

  * **Quarkus config files support: .properties and YAML** - To make it
    easier for you to work with Quarkus configuration files, the IDE now
    provides code completion and highlighting, and it colors unused code
    gray for both .properties and YAML configuration files.
    Additionally, you can jump right from the configuration files to the
    configured beans and back.

  * **Better Quarkus CDI support** - With the current version of the
    IDE, you can use gutter navigation for injected beans and updated
    inspections that work perfectly with the Quarkus simplified syntax.
    Additionally, IntelliJ IDEA 2020.2 supports DefaultBean,
    AlternativePriority annotations, and injection by qualifier only (no
    need to use Inject).

  * **Swagger UI support** - With the newly added Swagger UI
    integration, it is now possible to preview your OpenAPI in a built-
    in panel in the IntelliJ IDEA editor. This is a great update for
    simplifying testing.

  * **Swagger Diff Ultimate** - The IDE has been improved so that it
    can calculate a structural diff between OpenAPI specifications.
    Knowing the Swagger/OpenAPI specifics, IntelliJ IDEA 2020.2
    compares JSON or YAML files based on their structure, and you can
    preview the detected diff. To do so, choose Compare Open API
    Specifications from the context menu or invoke this action from the
    Search Everywhere dialog.

  * **Project generation for Micronaut** - Added the possibility to
    create new Micronaut projects directly from the wizard. Configure
    the project step-by-step and start working with it in no time.

  * **Message Queue support for Micronaut and Amazon SQS API** - If
    your Micronaut application uses asynchronous communication via
    RabbitMQ or Kafka, this update is for you. Navigate message queues
    and topics using gutter icons, find usages, and name completion. You
    can benefit from the same set of features for the Amazon SQS API.

  * **JAX-RS and MicroProfile REST Client HTTP Requests Generation** -
    For easy creation and testing of HTTP requests, IntelliJ IDEA will
    automatically generate JAX-RS and MicroProfile HTTP requests and
    then open them in the built-in REST Client. You can even use
    intention actions to generate HTTP requests on any URL if your
    project uses one of the enterprise frameworks: Spring, JAX-RS,
    Retrofit, OkHttp, or Micronaut.

  * **URL code completion for REST Assured tests** - Updated REST
    Assured tests with code completion for URL path references and
    navigation to the related resources.

  * **Selenium plugin adds integration with Selenoid** - The Selenium
    plugin now integrates with Selenoid and provides an easy way to run
    a new test environment right from the browsers.json file. All
    required browser images will be pulled automatically when the
    Selenoid container starts.

**Profiler**

  * **HPROF memory viewer** - Improved viewer mechanics help you
    analyze the heap, pointing out parts of the code that use large
    amounts of memory, and detect the causes of memory leaks. The HPROF
    memory viewer displays the calculated retained sizes of objects, the
    shortest paths to garbage collector roots, the dominator tree for
    objects (retained objects), and incoming references.

**User Experience**

  * **Faster indexing with pre-built shared indexes -** You can now
    speed up indexing by downloading indexes generated on another
    machine instead of building them locally. Use pre-built shared
    indexes for JDKs, or generate and distribute custom shared indexes
    to a target IDE build. Simply install the Shared Indexes plugin.

  * **New possibilities during indexing** - While IntelliJ IDEA
    2020.2 is indexing your project, you can now continue writing
    code. The IDE now offers code completion suggestions for Java and
    PHP during indexing.

**Terminal**

  * **Option to run IDE features from the Terminal -** It is now
    possible to call IDE features right from the Terminal. With IntelliJ
    IDEA 2020.2, you can run highlighted commands in their corresponding
    GUI using the Ctrl + Enter / Cmd + Enter shortcut.

**Build tools**

  * **Maven Wrapper support -** IntelliJ IDEA 2020.2 now supports the
    Maven Wrapper, which automatically installs the necessary version of
    Maven into your project. If the Maven Wrapper is present and
    configured, the IDE automatically uses it and imports changes when
    they are required.

  * **Maven versioning per project** - You can now set a Maven version
    for each project instead of using the previous approach, which used
    the same version of Maven for all open projects.

  * **Build tool output presentation** - To provide a more consistent
    user experience, this release now displays the build output of
    IntelliJ IDEA’s native builder in the Build tool window instead of
    in the Messages tool window.

  * **Better code insight in build.gradle files** - IntelliJ IDEA
    2020.2 provides project name completion and navigation for project
    names in build.gradle files.

**JavaScript and TypeScript**

  * **New intention actions for better productivity -** You can now
    quickly convert a for loop with a numeric index into a forEach array
    method. Reading documentation comments in JavaScript and TypeScript
    files has also become easier, as you can now render them right in
    the editor to minimize distractions.

  * **Prettier as a default formatter Ultimate** - Starting with this
    release, it is now easier to set Prettier as the default formatter
    for tidying up your code. Just enable the On code reformat checkbox
    in settings, and the IDE will use Prettier whenever you reformat
    your .js, .ts, .jsx, and .tsx files. If necessary, you can add other
    file types too.

  * **Nuxt.js support** - Added Nuxt.js support and Vue-specific code-
    style settings – great news if you work with the Vue.js framework.

**Database**

  * **Separate editor for cell values -** This release introduces some
    valuable tools for cases where you have a long value in a cell.
    Starting with this release, you can view and edit long values in a
    separate panel. The editor panel has a soft-wrap mode that can be
    toggled in the right-hand toolbar.

  * **New UI for boolean values** - It is now easier to observe and
    edit boolean values, which are now shown as raw values instead of as
    checkboxes. You can type f, t, d, n, g, or c to enter the
    corresponding values of false, true, default, null, generated, and
    computed. If you type anything else, you’ll get a drop-down list
    with possible values.

  * **DML preview in the data editor** - You can now preview a query
    with your changes in the data editor. To do so, click the DML button
    that becomes active if there are changes pending.

  * **Google BigQuery dialect Ultimate** - Added partial support for
    Google BigQuery. The IDE correctly highlights queries and offers
    coding assistance for them.

**Scala**

  * **Auto-import for Implicits -** While you can use View | Show
    Implicit Hints to display implicits (even absent ones), importing an
    implicit was never an easy task. The new Auto-import for implicits
    action works exactly like Auto-import for unresolved references. The
    automatic popup makes the feature more discoverable, but it’s also
    possible to disable the auto-popup and invoke the Import… quick-
    fix with Alt + Enter (more info).

  * **Indentation-based brace handling** - Both braces are added and
    removed automatically and on the fly based on code indents. In this
    way, you can try significant indentation while still keeping the
    braces, even in Scala 2. To take advantage of this feature, just
    don't think about the braces and let the IDE do the work.

  * **First-class companions** - In Scala, a companion class or
    trait and the companion object have a special relationship. Now
    it shows navigable gutter icons for companions. You can also
    navigate to a companion by using Go To on a class, trait, or
    object keyword. Companion object members can now easily be auto-
    completed or auto-imported.

  * **In-editor Scaladoc rendering** - Improved Scaladoc rendering in
    the Quick Documentation popup - it can now properly handle
    paragraphs, lists, and macros.

  * **Completion Improvements** - First, you can now autocomplete both
    the method’s name and its arguments in a single step, as long as
    appropriate values are present in the current scope. Second, you can
    now apply a "static" function to an argument using the dot notation,
    which can be used in conjunction with algebraic data types (ADTs).
    This functionality is a part of Hoogle Completion - the attempt to
    re-imagine Hoogle in a language that doesn't use Hindley-Milner type
    system (work in progress).

**Docker**

  * **Run Selenoid Docker infrastructure from the browser -** The
    Selenium plugin now features support for Selenoid, a powerful
    implementation of Selenium - a framework that uses Docker to provide
    a highly configurable fresh browser session for running tests. The
    new Selenium support in IntelliJ IDEA enables you to run Selenoid,
    make it connect to Docker, and run containers in one click.

  * **Connect to Docker securely** - IntelliJ IDEA 2020.2 allows you
    to securely connect to Docker on Microsoft Windows, as this
    release adds support for TLS connections to the Docker daemon from
    IntelliJ IDEA.

**Kubernetes**

  * **Multiple configuration files** - You can now specify a custom
    kubeconfig file in Preferences / Settings | Build, Execution,
    Deployment | Kubernetes. Alternatively, click the Show Settings…
    button in the Services view when selecting a Kubernetes root item.
    You can also specify a custom kubeconfig file either globally or for
    a current project. In other words, you can have a separate
    kubeconfig file for each of your projects.

  * **ConfigMap and Secret support** - Added completion for
    ConfigMaps/Secrets from the current project and from the cluster.
    Items from the cluster are marked in blue in the completion list.
    You can now navigate from a usage of ConfigMap/Secret to the
    corresponding ConfigMap/Secret resource in the project or cluster.
    The same goes for ConfigMap/Secret keys.

**Other**

  * IntelliJ IDEA 2020.2 includes all the changes from Android
    Studio 4.0.

  * IntelliJ IDEA can detect if you are using a screen-reader, and if
    so, it will automatically enable the IDE’s accessibility features.

  * IntelliJ IDEA 2020.2 lets you use Unicode emoji characters on Linux.

  * To avoid performance and rendering issues, it now offers a new
    integration with JCEF to run IntelliJ Platform plugins.
### Updates in 2020.1

#### Features

 **Java**

  * **Java 14 Support: Records and Pattern Matching -** IntelliJ IDEA
    2020.1 adds support for Java 14 and its new features. Not only does
    the IDE add full code insight support for Records, but it also
    enables you to quickly create new records and generate their
    constructors and components, and it warns about existing errors. You
    will also discover support for Pattern Matching for the instanceof
    operator including a new inspection and a quick-fix that quickly
    simplifies the verbose instanceof-and-cast idioms by replacing them
    with the new concise pattern variables.

  * **Download the JDK from the IDE** - You no longer need to search
    for the necessary JDK on the web. Starting with IntelliJ IDEA
    2020.1, you can download and set up a JDK build right from the IDE
    as you create and configure your project. If you open a downloaded
    project, the IDE checks whether the JDK configured for this project
    is already installed on your computer. If not, the IDE will prompt
    you to download it.

  * **New Java inspections** - With every new version of IntelliJ IDEA
    extends its static code analysis capabilities. And this release
    isn’t any different. Apart from a range of improvements, this
    release also adds several new code inspections. They check
    capitalization in the SimpleDateFormat patterns, analyze date
    formatting cases, search for additional redundant method calls, and
    report and suggest eliminating unnecessary escaping characters in
    string literals.

**Editor**

  * **LightEdit Mode -** IntelliJ IDEA 2020.1 comes with the long-
    awaited LightEdit mode. You can now make quick modifications to
    standalone files in a text-like editor without creating or loading
    an entire project. You can open files in this new lightweight editor
    from the command line, the IDE’s Welcome screen, or from your OS
    system file manager.

  * **In-place Rename and Change Signature** - When working on your
    Java or Kotlin app in IntelliJ IDEA 2020.1, you no longer need to
    use a cumbersome modal dialog to change the signature of a method or
    a class. Now you can simply edit the parameters of a class or a
    method, and then click the new gutter icon or press Alt+Enter to
    review and apply the changes to the class / method declaration and
    all of its usages.

  * **In-editor Javadocs rendering** - Reading Javadocs in the editor
    can be annoying because of all the tags you have to wade through,
    especially when you need to interact with the reference links and
    images. This is why this version adds a way to render Javadocs right
    in the editor.

  * **Quick type definition** - Learn the type definitions of
    variables, fields, methods, and other symbols without switching
    focus from your code. Place the caret at the necessary symbol and
    select View | Quick Type Definition from the main menu. IntelliJ
    IDEA then shows you the information in a popup, from which you can
    open the source file and edit the code.

  * **Improved navigation bar** - IntelliJ IDEA 2020.1 provides one
    more option to simplify project navigation. You can jump to the
    necessary line in a file straight away without scrolling because the
    navigation bar now shows you methods in Java classes and interfaces.

  * **Zen mode** - Introduced the new Zen Mode for the editor. It helps
    you eliminate any distractions and focus solely on your source code.
    Zen mode combines Distraction Free Mode with Full Screen Mode, so
    you don’t have to enable both of them anymore.

  * **Smart Grammar and Spell Checker** - IntelliJ IDEA 2020.1 comes
    bundled with the Grazie plugin, which is a comprehensive grammar,
    spelling, and style checking tool. Now the IDE checks more than just
    your code constructs. It also helps you write clear string literals,
    comments, Javadocs, commit messages, and much more in 16 natural
    languages.

**Debugger**

  * **Dataflow analysis assistance** - IntelliJ IDEA 2020.1 adds
    dataflow analysis to the JVM debugger. It predicts code execution
    before this code is actually executed. When your application stops
    at a breakpoint, the IDE runs dataflow analysis based on the current
    state of the program to check what is going to happen next.

  * **Pin to top -** Another improvement is the ability to pin any of an
    object’s fields to the top of the fields list. This is handy when
    an object has so many fields that it’s difficult to locate the one
    you need to investigate.

**Profiler**

  * **Focus on method calls** - Support for application profiling in
    IntelliJ IDEA keeps evolving. This release adds several new
    features: Focus on Subtree, Focus on Call, Exclude Subtree, and
    Exclude Call. With these options, you can focus more specifically on
    a chosen method call and filter out the unnecessary ones.

  * **Collapse recursive calls** - The profiler in IntelliJ IDEA now
    detects recursive calls when the same method is called higher up in
    the stack. The IDE allows you to bypass recursion by taking these
    calls out of the subtree, which lets you focus on the methods that
    consume most of the resources and on the calls that they make.
    Recursive calls are marked with this new special icon in the Call
    Tree tab of the Profiler tool window.

  * **Initial support for HProf snapshots** - IntelliJ IDEA 2020.1
    opens .hprof memory dump files that can help you identify memory
    leaks and find ways to optimize memory usage. For example, you will
    see basic information, like the total size, number of instances,
    and stack traces of the file. The files also list all root objects
    grouped by classes, all classes sorted by their numbers of
    instances or size, and all class instances with the field value
    viewer. To open the .hprof file, go to Help | Find action and type
    “hprof” to find the Open Hprof Snapshot action. Note that this
    feature is in its early stages, and will be improved in the
    following major releases.

**Version Control**

  * **New Commit tool window** - IntelliJ IDEA 2020.1 reworks the
    interface for committing changes to your VCS repository - instead of
    a modal Commit dialog, you can now take full advantage of the
    dedicated Commit tool window. It provides more space for the list of
    modified files and the diff, and it lets you add changes to a commit
    when they are ready, compose a commit message iteratively, and
    choose which of the staged changes go into which commit.

  * **New Interactively Rebase dialog** - The reworked Interactively
    Rebase from Here dialog has become truly interactive. Now it does a
    lot more than letting you select an action you want to perform on
    each commit in your branch. It also features a graph showing which
    actions have been applied, displays commit details, and lets you see
    a diff and review or reset the changes if necessary.

  * **Install Git from the IDE** - With IntelliJ IDEA 2020.1, you no
    longer need to pre-install Git manually. When you clone an existing
    Git repository, the IDE will look for the Git executable on your
    machine, and will offer to download and set it up for you if the IDE
    can’t locate it.

  * **Branches popup**

    * The Branches popup now features an explicit search field that
      enables you to look for existing remote and local branches.

    * The Refresh button has been reworked, so that you can now use it
      to update the existing remote branches.

    * Incoming (blue) and outgoing (green) commit indicators have been
      added to the status bar.

    * The Log now features a branches list.

**UI**

  * **JetBrains Mono** - JetBrains Mono has become the default font of
    IntelliJ IDEA in this release.

  * **Unified IntelliJ Light theme** - IntelliJ IDEA 2020.1 features a
    new default light theme that is now unified across all the different
    operating systems.

**Frameworks and Technologies**

  * **Spring WebFlux** - v2020.1 enhances support for the Spring
    WebFlux framework. Added request mappings, so if your WebFlux
    application has Actuator enabled, you can access the mappings in the
    Run tool window to monitor your application and interact with it.
    Also, the IDE now works properly with the Rendering API, so code
    autocompletion and navigating to the related views are now
    available. On top of that, you can take full advantage of the code
    insight features, such as Find Usages (Alt+F7), and the Rename
    refactoring (Shift+F6).

  * **Spring profiles** - Previously, IntelliJ IDEA treated Spring
    profile expressions as strings. Starting with v2020.1, the IDE
    distinguishes between different profiles in an expression, and lets
    you apply smart actions to them, such as Find Usages (Alt+F7) and
    the Rename refactoring (Shift+F6). Also enhanced the usability of
    the Change Active Spring Profiles popup and implemented completion
    for existing profiles.

  * **Selenium** - IntelliJ IDEA 2020.1 Ultimate introduces initial
    support for Selenium, a popular framework for testing web
    applications, through a new Selenium UI Automation Testing plugin.
    The new plugin supports the most popular JVM frameworks for UI
    testing and reporting libraries: Selenium, Selenide, Geb, Serenity
    BDD, and Allure Framework. IntelliJ IDEA’s enhancements for
    Selenium include a new project wizard, highlighting, inspections,
    and code completion in tests for Java/Kotlin/Groovy languages,
    validation for various configuration files, and icons in the gutter
    for easier navigation.

  * **JMS and Spring Messaging APIs Ultimate** - IntelliJ IDEA 2020.1
    comes with a full set of code insight features for JMS and Spring
    Messaging APIs for both Java and Kotlin applications. These include
    code completion, navigation, the Rename refactoring (Shift + F7),
    reference injection (Alt + Enter), and more.

  * **Micronaut** - In the previous version of IntelliJ IDEA, added
    support for the Micronaut framework. The new version extends this
    support and adds automatic completion for parameters in
    configuration files, as well as navigation and quick documentation.
    The IDE now also autocompletes basic data types and detects whether
    a value is invalid. Additionally, IntelliJ IDEA now recognizes
    injected RegExp fragments in Micronaut URL mappings, which makes the
    syntax more readable.

  * **RxJava** - IntelliJ IDEA 2020.1 augments RxJava support by
    adding a number of useful inspections. The IDE now detects unused
    publishers, and lets you know when a lambda returns a null. It
    also highlights thread-blocking method calls and filter chains
    that are too long.

  * **Quarkus and MicroProfile** - With IntelliJ IDEA 2020.1, you can
    now create new Quarkus and MicroProfile projects directly through
    the New Project wizard, which will walk you through the initial
    configuration.

  * **Injections for third-party SQL libraries** - The IDE now
    automatically injects SQL fragments for popular third-party
    libraries that were previously treated as usual strings, and
    provides code completion and navigation for SQL statements and
    fields. The list of supported libraries includes R2DBC, Vert.x SQL
    Clients, Apache Spark SQL, and Apache DB Utils, among others.

  * **Swagger Codegen** - IntelliJ IDEA 2020.1 is integrated with
    Swagger Codegen - a powerful tool for generating server stubs, API
    clients, and documentation that supports a vast range of programming
    languages. This release prepares a dedicated run configuration where
    you can set things like a path to generate the files to, a path to
    the .mustache templates folder, a language, and a different JRE in
    case of compatibility issues. To let Swagger Codegen do its magic,
    you just need to open an OpenAPI/Swagger file, specify its settings,
    configure a few options, and then click Run.

  * **Remote specifications** - IntelliJ IDEA 2020.1 knows how to
    work with openapi/swagger specifications. For example, it provides
    autocompletion for them. You just need to enter the specification
    URL in the settings, and the IDE will complete URL paths from it
    as you type.

**HTTP Client**

  * **Improved autocompletion, and more** - The HTTP client in IntelliJ
    IDEA 2020.1 is smarter. Now it can correctly autocomplete path
    variables and URL paths, and it can get you to the related endpoints
    right from the HTTP request files. Also includes an update for
    Spring users: Spring MVC handler methods now feature a gutter icon
    for URL mappings. Use it to create or open an existing HTTP request
    file and navigate to the HTTP client.

**Docker**

  * **Easier Pull workflow for Docker -** To help you more easily pull
    images from a Docker registry, this release reworks the UI and
    removed the modal dialog. Now, you can simply click the Images
    node in the left-hand pane of the Service tool window, and
    IntelliJ IDEA will open the Images Console tab in the right-hand
    pane, from which you can easily pull images. The IDE also provides
    completion for images.

**Kubernetes**

  * **Apply command for Kubernetes files** - You can now update a
    Kubernetes cluster to match a state defined in your local files, by
    invoking the “Apply” command right from the editor gutter.

**Build tools**

  * **Maven and Gradle importing updates** - IntelliJ IDEA 2020.1
    brings a small but important update to Maven and Gradle users.
    Instead of the old auto-import, there’s now a floating
    notification in the upper-right part of the editor. Use this
    notification or a new shortcut (Ctrl+Shift+O for Windows and Linux
    /Shift+Cmd+I for Mac) to load the changes after you modify the build
    file. It gets even better: when IntelliJ IDEA detects any changes to
    the build file made outside the IDE, such as VCS updates, it reloads
    the related projects automatically.

**Scala**

  * **Scala 3 support** - The Scala plugin now includes preliminary
    support for Scala 3, with the new syntax, error highlighting,
    navigation, type info, and many other bread-and-butter IDE features.

  * **Fine-grained error highlighting for function literals** - In
    Scala, functional literals are used a lot. They are very much like
    methods and have separate parameters and bodies. But they are often
    treated as a single expression of function type, making it harder to
    locate and interpret errors. This release introduces fine-grained
    error highlighting for function literals, which can help you
    pinpoint errors relying on clear and precise messages, instead of
    possibly obscure messages with function types.

  * **Unused Parameter inspection** - The Scala plugin has been able to
    show unused variables and methods for a long time. Now it can also
    spot unused parameters. Parameters that are not referenced inside a
    method or class are highlighted in gray. In contrast to variables
    and methods, unused parameters are often the result of programming
    errors. So not only does the new inspection make your code cleaner,
    but it can also help you prevent various errors.

  * **Smart Step Into** - In Scala, you often have multiple method
    calls on the same line. In such cases, using Step Into in the
    debugger is hardly convenient – you have to manually step into and
    then out of many methods before you reach the desired one. In this
    release, Step Into has become Smart Step Into. You can simply choose
    a desired method, and the IDE will do the work.

  * **BSP support improvements** - Improved BSP support. It now works
    more smoothly, and with more projects and build tools. You no longer
    have to manually install Bloop to import sbt projects via BSP - the
    Scala plugin can convert such projects to Bloop format
    automatically. It's now possible to cancel BSP builds from the Build
    tool window. Finally, you can view and manage BSP connections using
    the BSP widget.

**JavaScript**

  * **New smart intentions and inspections** - New smart intentions and
    inspections (Alt+Enter) enable you to save yourself some time when
    coding. For example, you can now quickly convert the existing code
    to optional chaining and/or nullish coalescing, the syntax
    introduced in the latest versions of JavaScript and TypeScript.

  * **Vuex and Composition API support** - With out-of-the-box support
    for the Vuex library and the Composition API from the upcoming Vue
    3, you can build great Vue.js applications even more smoothly.

**Database improvements**

  * The database improvements include the ability to export data to
    Excel (.xlsx) files, view data as text right in the editor, create
    run configurations, and many other things.

**Terminal**

  * **Split terminal sessions** - Added an ability to split terminal
    sessions vertically or horizontally so that you can run them side by
    side. You can invoke the context menu from the Terminal to create,
    navigate, and close a split terminal session.

**Run Configurations**

  * **Store Run Configurations as files** - Starting with v2020.1, you
    can choose any location within your project folder for your run
    configurations. To do so, open the Run/Debug Configurations dialog,
    check Store as project file in the upper right part of the dialog,
    and click the gear icon. This will open a popup which allows you to
    choose where to store your run configurations.

**Android**

  * **Android Volley support** - IntelliJ IDEA 2020.1 brings support
    for the Android Volley library. It provides automatic code
    completion for URL path references, and lets you navigate to related
    resources.

**Other**

  * IntelliJ-based IDEs have fully switched from JetBrains Runtime 8
    (JBR8) to JetBrains Runtime 11 (JBR11).

  * IDE settings are now automatically imported from one major version
    to another.
### Updates in 2019.3

#### Features

  * **Faster startup** - One of the major performance improvements in
    this release is that startup times are shorter than ever. This
    release introduces substantial architectural changes to parallelize
    some of the tasks the IDE performs at startup so that they are not
    performed sequentially.

  * **Reduced memory consumption** - IntelliJ IDEA 2019.3 optimizes
    performance to reduce peak memory consumption when importing large
    Gradle projects.

  * **Responsive UI** - Over 1600 UI freeze reports have been fixed.
    This release also includes fixes for issues with editing POM.xml
    files in Maven projects, where completion suggestions are now
    displayed without any delays. Other fixes have resulted in faster
    processing of VCS status updates in large projects, better handling
    of ignored files, faster rendering of the project tree, better
    performance when working with a large number of editor or debugger
    tabs, and more speedups.

  * **Better Java performance** - This release brings lots of
    improvements for Java type inference, which not only fix various
    editor freezes but also speed up Java type inference for long method
    call chains. The ‘Join Lines’ action works faster when applied
    to multiple lines. You’ll also experience accelerated highlighting
    for Java code, especially when it comes to methods with generic var-
    args into which dozens of arguments are placed.

  * **Better Kotlin performance** - IntelliJ IDEA 2019.3 bundles Kotlin
    1.3.60, which provides some impressive speedups such as faster
    highlighting in the editor.

  * **Installing theme and keymap plugins without restarting the IDE**
    - IntelliJ IDEA 2019.3 implements support for dynamic plugin
    installation, which means that now you can load and unload theme and
    keymap plugins without restarting the IDE.

  * **More noticeable scrollbar** - If you have had difficulty seeing
    the scrollbar, you now have the possibility to make it stand out.
    Just enable the ‘Use contrast scrollbars’ setting under
    Settings/Preferences | Appearance & Behavior | Appearance.

  * **Smooth scrolling** - A small but very valuable improvement is
    to scrolling, which is now much smoother when done using the
    mouse wheel.

  * **Automatic configuration of imported Maven or sbt projects** - Now
    when you import, create, or open an sbt or Maven project, IntelliJ
    IDEA will automatically set it up for you, so you no longer need to
    configure the settings manually.

  * **Reworked behavior of context actions** - In the intention actions
    dialog, the IDE now shows all available intention actions by
    default, even after you’ve chosen an action and closed the dialog.

  * **Extended support for Java 13 features** - This release has
    extended support for Java 13 text blocks: they are formatted
    automatically when inserting a third quote.

  * **More template languages can be injected** - With IntelliJ IDEA
    2019.3, you can inject more template languages into your code,
    specifically Pug (ex-Jade), Handlebars, EJS, and Slim.

  * **New ‘Field Call Hierarchy’ action** - There’s now a simple
    way to view the hierarchy of a selected field by calling the new
    ‘Field Call Hierarchy’ action with Ctrl+Alt+H.

  * **Unified popup for errors and documentation** - When you hover
    the mouse over a symbol highlighted by an inspection, now you
    can have the popup also display the error, in addition to
    showing code reference information. To enable this, select
    ‘Show quick documentation on mouse move’ in
    Settings/Preferences | Editor | General.

  * **Improved Git checkout workflow** - To eliminate confusion, the
    newly renamed ‘Checkout’ action called on a remote branch now
    creates a new local branch, checks it out, and sets tracking to
    the upstream. This release also adds a ‘New Branch from
    Selected’ action for local and remote branches, which creates a
    new local branch and checks it out, but doesn’t set tracking to
    any remote branch.

  * **A simpler way to push branches** - Another time-saver you’ll be
    glad to discover is that you no longer need to check out a branch to
    push it - you can simply select a branch in the Git branches popup
    and push it from there.

  * **Unified ‘clone’ experience** - This version reworks the
    ‘Clone’ dialog to unify the UI for getting projects from
    different VCS hosting services. If you’re already logged in to
    your VCS, the IDE displays a list of available repositories that you
    can choose from, so you no longer need to enter a repository URL.

  * **More insight into merge conflicts** - Now when a conflict occurs
    during a merge, rebase, or cherry-pick operation, you can get more
    information about the source of the changes displayed in the Merge
    dialog. Simply click the ‘Show Details’ link to get the list of
    commits that led to the resulting code state.

  * **Microservices frameworks support** - To help keep your IntelliJ
    IDEA projects technologically relevant, version 2019.3 adds initial
    support for Micronaut, Quarkus, and Helidon. You can enjoy full
    coding assistance, navigation, inspections, find usages, and other
    goodies if you employ a microservice-based architecture for your
    Java projects.

  * **OpenAPI and Swagger support** - This release introduces support
    for Swagger v2 and OpenAPI v2, which provides validation by schema,
    as well as code completion, navigation, find usages, and the Rename
    refactoring in YAML/JSON files containing API descriptions.

  * **New Endpoints view** - The brand-new ‘Endpoints’ tool
    window provides an aggregated view of both client and server APIs
    used in your project for HTTP and Web Socket protocols. What is
    more, you can extend the view to all projects currently opened in
    IntelliJ IDEA.

  * **Spring Web Flux support** - View the full list of Web Flux URL
    mappings in the MVC view in the Spring tool window, navigate between
    them, and benefit from coding assistance, search, and the Rename
    refactoring for URLs and URL segments.

  * **Java HTTP Clients support** - IntelliJ IDEA 2019.3 brings URL
    support in the following Java HTTP client APIs: java.net.{URI/URL},
    Retrofit v2, OkHttp v3, and Injectable URL reference. Coding
    assistance, navigation, find usages – everything you’re used to
    in Java is now available for HTTP clients.

  * **Project Reactor support** - Take advantage of inspections for
    Java and Kotlin Reactor projects, which report thread-blocking
    method calls detected in code fragments where a thread should not be
    blocked. The IDE will also warn you about the potential return of
    null from lambda operators of Flux and Mono methods. On top of that,
    there’s a dedicated Reactor debug mode that provides a helpful
    view of the reactive stack frames and intermediate variable values.

  * **MongoDB support** - IntelliJ IDEA 2019.3 comes with long-awaited
    MongoDB support. After you’ve added a MongoDB data source, view
    collections and fields in the database explorer, run queries, and
    review query results. We’re going to extend MongoDB support in
    future releases.
### Updates in 2019.2

#### Features

 **Java**

  * **Java 13 -** The IDE provides support for updated Switch
    Expressions and their new syntax: now if you need to return a value
    from a multi-line block in Java 13, you can use the yield keyword
    instead of break. Also added support for text blocks, which allows
    you to embed longer multi-line blocks of text into your source code,
    for example, HTML or SQL. With this feature, you paste across the
    two formats, either escaping values when pasting into a String or
    leaving out the escapes when pasting into a text block.

  * **Refactoring methods with multiple exit points** - Added a new
    intention that you can run to transform a method with multiple
    returns into a single exit point and prepare it for the Inline
    Method refactoring. A method may include multiple exit points by
    defining multiple return statements. When you inline such a method
    in IntelliJ IDEA, it can be modified to define just one exit point
    in the form of a single return statement to exit the method. Such
    methods are less confusing as you have one path through them and you
    don’t need to search for the exit.

  * **‘Constant conditions & exceptions’ pinpoints the source of the
    problem** - Topped off the good old ‘Constant conditions &
    exceptions’ inspection with a new action called ‘Find Cause’.
    In addition to notifying you about possible or actual issues, the
    inspection navigates you to the questionable piece of code. No more
    reading through the file and searching for the necessary line.

  * **Modified inspection weeds out duplicates from your code** -
    Merged the ‘Duplicated code fragment’ inspection for Java with
    the ‘Locate duplicates’ tool for other languages, to give you a
    powerful new inspection called ‘Duplicated code fragment’ which
    combines the best of both worlds. It’s configurable, works on the
    fly, and supports lots of languages other than Java.

  * **Updated completion popup suggests correcting mistyped patterns**
    - IntelliJ IDEA 2019.2 changes the look of the code completion
    popup to made it even more helpful. From now on, completion
    recognizes mistyped patterns and suggests possible fixes, so if you
    type “retru” by accident, the IDE will suggest replacing it with
    “return”.

  * **Structural Search shows occurrences instantly** - Structural
    Search is a powerful feature that allows you to search for a
    specific code pattern in your project. IntelliJ IDEA highlights
    strings that match your search in the editor as you type. What’s
    more, the IDE displays the filter values right in the editing area
    of the Structural Search dialog. There is no more need to
    continuously re-run the search while you are experimenting with
    the pattern.

**Profiling Tools**

  * **IntelliJ IDEA now offers profiling tools** - Now you can analyze
    the performance of your application right inside your IDE as
    IntelliJ IDEA is integrated with Java Flight Recorder on Windows,
    macOS, and Linux. macOS and Linux users can also enjoy the Async
    Profiler. This tool can easily become your best friend as it tells
    you everything about how memory and CPU are allocated in your
    application.

**Services**

  * **Services tool window: a single control panel for all connections,
    configurations, and more** - Now you have everything you need to
    control all under one view. A brand new Services tool window
    condenses and encapsulates the most useful tools: RunDashboard,
    Database Console, Docker, and Application Servers views. It also
    provides a single display and control point for connections, run and
    debug configurations, application servers, database consoles, and
    more. For databases, the tool window features the query live timer
    which shows you the duration of each connection running a query.

  * **A running Docker container lets you view its file system** - In
    IntelliJ IDEA 2019.2, you can view the file system of a running
    Docker container in the Files tab of the Docker node in the Services
    tool window.

**Performance**

  * This release improves the performance and UI responsiveness for the
    file system refresh, and reduces most delays caused by processing
    filesystem changes.

**Editor**

  * **Each directory can have its own code style** - You can now have a
    separate code style configuration for each folder. Fancy trying it?
    Place an EditorConfig file in the root directory of a module or a
    package, and you are good to go. The IDE can now manage all code
    style settings via the EditorConfig file. All adjustments are now
    visible in the preview, so your days of blind fiddling with the
    settings are over.

  * **Syntax highlighting is available for over 20 languages** -
    IntelliJ IDEA is now integrated with the TextMate editor to provide
    out-of-the-box syntax highlighting for over 20 different programming
    languages. If you need to add highlighting for any additional
    languages, all you need is to do is to download the TextMate bundle
    for the language and import it into the IDE.

  * **The ‘Move Caret to Next Word’ action provides options** - Now
    you can choose where to place the caret: at the end of the current
    word or at the beginning of the next word. Pick the behavior that
    works best for you in the Caret Movement option in
    Settings/Preferences | Editor | General.

  * **Tab now takes you outside the closing bracket or quote** -
    Another feature to help you type faster is now enabled out of the
    box: the Tab key navigates you outside of the closing brackets or
    quotes. This feature works only when you’re typing.

  * **Selected code gets wrapped in quotes or braces automatically**
    - Although it’s not technically brand new, this super handy
    feature is now enabled by default: when you type a brace or a
    quote, IntelliJ IDEA automatically wraps the selected code in
    braces or quotes.

  * **macOS now has a new default keymap** - Changed the default keymap
    for macOS from Mac OS X to macOS 10.5+ and also renamed the keymaps:
    Mac OS X 10.5 is now called Default for macOS, and the outdated Mac
    OS X is now IntelliJ IDEA Classic.

  * **IntelliJ IDEA works with large files smoothly** - You can now
    easily open files larger than 25MB in IntelliJ IDEA and search
    through them without tedious waiting. This is a very nice little
    improvement for those of you who work with the log files.

**Appearance**

  * **Inspection popup shows the most relevant fix** - This release
    delivers fixes suggested by code inspections even faster. Now the
    inspection popup not only describes the problem, but also shows you
    the most relevant solution straight away. Press Alt+Shift+Enter if
    the fix works for you, or use the Alt+Enter shortcut to pick another
    option from the list.

  * **New Class dialog gets a new look -** The New Class dialog has a
    new look. What’s more, now it lets you preview the types of
    classes you can create.

  * **Windows User interface has a fresh classy appearance** - On
    Windows 10, the IDE now has a new modern borderless look.

  * **Project View now shows file size and modification time** - A new
    option helps you keep an eye on what’s going on in your project
    and shows the size and modification timestamps for all items in the
    Project View tree. To enable the feature, select View | Appearance |
    Descriptions in Tree Views.

  * **Editor and debugger tabs get a unified look** - The design of the
    editor and debugger tabs has changed to look the same in the Light
    and Darcula themes. In the Light theme, aligned the tab’s height
    with the height of the tool window header. Also removed the white
    line under the tabs to minimize visual clutter.

  * **Find Usages toolbar becomes more elegant** - Continuing the trend
    of removing unpopular icons from toolbars and making them less
    visually loaded, trimmed down the toolbar of the Find Usages tool
    window. Some icons are now grouped and some are gone completely.

**Gradle**

  * **Gradle features a new Dependencies diagram** - In this release,
    it adds the long-awaited Gradle Dependencies diagram. Just click the
    Show Dependencies icon on the Gradle tool window toolbar or press
    Alt+Shift+Ctrl+U/Alt+Shift+Cmd+U. Select the nodes from this diagram
    to look at their neighbours, and click the nodes to see how they are
    connected to the root.

  * **More coding assistance features added for build.gradle files -**
    Starting with version 2019.2, you can edit build.gradle files more
    easily. IntelliJ IDEA now supports the task declaration syntax and
    various dependency notations, and offers code completion inside
    dependency blocks and dependency configuration closures.

  * **Gradle task output is improved -** The status tree and output
    console of Gradle operations are now shown side by side to help you
    monitor the sync/build process. This offers you more detailed and
    familiar Gradle output information.

  * **Working with Gradle settings gets easier** - Simplified the
    Gradle settings dialog by deprecating several options. What’s
    more, IntelliJ IDEA automatically configures the settings for you
    when you open, import, or create Gradle projects.

**Maven**

  * **Maven sync output is shown in the Build tool window** - IntelliJ
    IDEA now reports the Maven import process in the Build tool window,
    together with the Maven build output. This makes the progress and
    error reporting more visible, simplifies navigation, and makes the
    Gradle/Maven experience more consistent.

  * **Maven dependency completion works out of the box** - Code
    completion for dependencies in the pom.xml now works out of the box.
    Previously, it only worked if you triggered the indexing of your
    Maven repository.

**Version Control**

  * **The native ignore file handling is now fully supported** - In
    this release, it adds the native ignore file handling for Git. From
    now on, the native ignore file handling is available for all
    supported version control systems out of the box. You will no longer
    need to manually add files to the .gitignore list in the settings.
    Everything is much simpler now: add a file to the list of ignored
    files from either the Project Tree or the Local Changes tab of the
    VCS tool window. The .ignore plugin that used to offer Git ignore
    and HG ignore support now only provides advanced functionality of
    VCS ignores, as the main functionality is part of the platform.

  * **Commit files from the Local Changes tab -** IntelliJ IDEA 2019.2
    brings a big change for projects that use Git or Mercurial.
    There’s no need to open a separate dialog to commit files; now you
    can commit files from the Local Changes tab of the Version Control
    tool window. There, you can review the modified files and make
    changes if necessary because the commit dialog doesn’t block the
    rest of the IDE.

  * **Smart VCS integration reminds you to commit files** - IntelliJ
    IDEA 2019.2 reminds you to modify the files you have usually
    committed before together with the files you modified recently.

  * **The IDE suggests adding files copied externally to VCS** -
    IntelliJ IDEA prompts you to add any files copied into the project
    from outside the IDE, or files created in the console or during code
    execution to version control. You can also configure the IDE to add
    such files automatically.

  * **VCS Log tab allows you to select the information to show** - Now
    you can choose which columns you want to see in the VCS Log tab.
    Click the eye icon, select ‘Show Columns’, and then select the
    columns you want to display: author, date, or commit hash.

  * **Git Merge and Cherry-Pick can be aborted from the UI** - Now you
    don’t need to switch to the terminal to abort Git Merge or Cherry-
    Pick anymore. The Abort Merge/Abort Cherry-pick option shows up in
    the Branches popup while the process is running.

  * **Show History for a folder displays results on the Git Log tab** -
    Track changes in your project with ease. Now, when you use the Git |
    Show History action on the selected directory in the Project View,
    the IDE displays the results in the Log tab filtered by the
    respective path.

  * **Update Info after Update Project action is shown as Log tab** -
    Previously, when you used the Update Project and Pull actions, the
    IDE would show a tree of updated files in the Update Info tab of the
    Version Control tool window. In v2019.2, the Update Info is
    displayed as a list of commits received during the update. The
    Update Info tab now looks like the Log tab.

  * **Comparing branches becomes more convenient** - The ‘Compare
    with Current’ action in the Branches popup is divided into 2
    separate actions: ‘Compare with Current’ and ‘Show Diff with
    Working Tree’. The updated ‘Compare with Current’ action now
    shows the difference in commits, while the new ‘Show Diff with
    Working Tree’ action shows the file diff.

  * **Diff now shows the method with modified code** - While in the
    “Collapse Unchanged Fragments” mode, the Diff now shows the
    method in which the current chunk of code is modified. It makes it
    easier for you to not only see the change, but to understand the
    context as well.

**Kotlin**

  * The bundled Kotlin plugin in IntelliJ IDEA is now updated to
    v1.3.41.

  * **JPA for Kotlin gets more coding assistance features** - IntelliJ
    IDEA 2019.2 comes with a wider range of JPA coding assistance
    features for Kotlin. Now you can generate Kotlin entity classes on
    selected tables with the Generate Kotlin Entities script. The script
    is easily customizable; go to the Scripts Directory and experiment
    with the script by modifying it to solve a specific task. What’s
    more, the IDE can now navigate you to the corresponding column or
    table with the ‘Go to Declaration’ action (Cmd+B/Ctrl+B).

  * **‘Async stack trace’ shows the variable state at the last point
    of suspension** - When you stop at a breakpoint inside a suspend
    function or a lambda, ‘Async stack trace’ now shows you the
    state of the variables at the last point of suspension. You can
    browse the whole stack trace of suspend functions starting from the
    last suspension point in the current coroutine and check the stored
    values of the variables. This can help you understand how you got to
    the current point of execution.

  * **Interactive mode for scratch files shows changes on the fly** -
    As you know, in Kotlin you can perform small experiments with your
    codebase using scratch files. Now you can use the interactive mode
    which shows you the results on the fly after a certain timeout,
    without the need to explicitly rerun the script.

  * **TODO list displays multiline comments for Kotlin** - How often do
    you check the TODO list in your project? IntelliJ IDEA now correctly
    highlights multiline TODO comments in Kotlin and displays them as a
    list in the TODO tool window.

  * **The IDE warns you on incorrect external annotations** - If you
    use external nullability annotations for Java, the IDE can now warn
    you about incorrect usages of annotated Java methods from Kotlin.
    Note that this is purely IDE functionality; the corresponding code
    is compiled without warnings by the Kotlin compiler, while the IDE
    shows an additional warning.

**Groovy**

  * Extended the Groovy 3.0 syntax and our support for nested code
    blocks. Moreover, the IDE now makes the braces and arrows in a
    closure expression bold by default so that you can easily understand
    the structure of the code and distinguish code blocks from closures.

  * You can also enjoy quick-fixes that add explicit types for all the
    parameters in a method declaration for Groovy methods where the
    types of the parameters aren’t explicitly defined.

**Scala**

  * **New way to highlight type mismatches** - Instead of underlining
    type mismatch errors with a red squiggle, which might span across
    multiple lines, IntelliJ IDEA now shows a type ascription hint and
    highlights the part that doesn’t match the expected type.

  * **Type mismatch tooltips show diff** - Type mismatch tooltips are
    now fine-grained, vertically-aligned, and offer pairwise comparison.
    The algorithm takes syntactic sugar, subtyping, variance, and other
    tricky stuff into account.

  * **Type hints are interactive** - Type annotation hints now support
    dynamic folding, tooltips, navigation, and brace matching. The type
    hints are now shown only when truly needed.

  * **Expressions are wrapped / unwrapped as you type** -
    Previously, you had to use intentions to wrap (or unwrap)
    expressions inside curly braces. Now IntelliJ IDEA can do that
    automatically, as you type.

  * **Redundant code is now unobtrusive** - IntelliJ IDEA has always
    used grey to mark unused imports or unreachable code as
    “redundant” (as defined by the color scheme). Some other
    redundant code, however, was highlighted as “generic warning or
    error”, which polluted code and concealed actual errors. Now it
    uses grey to color all redundant code uniformly, so the highlighting
    is less obtrusive.

  * **Improved code completion -** You can now complete the whole case
    clause (whereas before, it was only possible to complete patterns in
    case clauses). Completion works not only for match statements, but
    for higher-order functions as well.

  * **Enhanced language injections** - Now you can inject languages
    into multiline string literals with margins.

  * **Build Server Protocol is fully supported** - IntelliJ IDEA now
    supports the Build Server Protocol (BSP), which standardizes how
    build tools (servers) and IDEs (clients) communicate with each
    other. For a while, BSP support was an experimental feature, but now
    it is a first-class citizen in the IDE.

**JavaScript & TypeScript**

  * **New intention replaces an extra variable with another
    destructuring** - With the new ‘Propagate to destructuring’
    intention (Alt+Enter), you can replace an extra variable with
    another destructuring whenever possible. To remove a destructuring
    completely, use the intention action called ‘Replace destructuring
    with property or index access’. The IDE now warns you if a boolean
    expression in a condition has some unnecessary parts and suggests
    simplifying it.

  * **Rename refactoring for JavaScript is now enhanced** - When you
    rename a symbol in a JavaScript or TypeScript file, the IDE now
    groups together dynamic usages and, by default, excludes them from
    the refactoring. This makes the refactoring more accurate and gives
    you more control over what exactly should be renamed in the
    Refactoring Preview tool window.

  * **Improved support for Vue.js allows for better completion** -
    Using Vuetify or BootstrapVue in your Vue.js application? IntelliJ
    has adopted a new approach to working with these libraries in the
    IDE. From now on, code completion for components and their props
    from these and some other Vue component libraries is more precise.

  * **Node.JS is now bundled with IntelliJ IDEA Ultimate** - The
    Node.JS plugin now comes pre-installed with IntelliJ IDEA Ultimate.

**Database Tools**

  * **Full-text Search offers comprehensive results** - Now you can
    search for the data you need even if you don’t know its exact
    location. Right-click the data source or a group of data sources
    that you want to search through and select Full-text Search, or
    press Ctrl+Alt+Shift+F / Cmd+Alt+Shift+F. The results are filtered
    to show you only those strings in which the data is found. If you
    cannot locate the data because there are too many columns, use the
    text search in the data editor (Ctrl/Cmd+F).

  * **Filtering by data source available in search and navigation** -
    Locating an object in the GoTo popup is not always easy, especially
    when there are too many similar items. In IntelliJ IDEA 2019.2, you
    can choose where to search: in a particular data source or in a
    group of sources. The same works for Find In Path. This is
    extremely useful if you are looking for source code inside of DDLs
    of other objects.

**JVM Debugger**

  * **Step Into action offers you a choice of methods to step into** -
    When you’re doing ‘step into’ on a line with several methods
    calls, you can choose the method, lambda, or method reference that
    you want to step into.

**Shell Script**

  * **IntelliJ IDEA introduces shell script support** - This release
    offers rich editing support for shell scripts, including word and
    path completion, Quick documentation, and even textual rename. You
    can also create run configurations for executing shell scripts –
    and that's only half the story. Integrated several external tools
    into IntelliJ IDEA for even more advanced shell script support. From
    now on, you can use Shellcheck to detect and fix errors in your
    script, Shfmt to properly format your shell script, and Explainshell
    to get a full description of the necessary command by pressing
    Alt+Enter.

**HTTP Client**

  * **HTTP client supports cURL requests -** Now you can paste a cURL
    request string into the HTTP client and have the IDE automatically
    convert it to a full request.

  * **HTTP client keeps cookies** - Suppose you’ve made one request
    to authenticate on the service, and in subsequent requests you would
    like to call some endpoints that require additional permissions.
    Previously, you would lose the cookies from the first response. But
    not anymore: the IDE now keeps all the cookies for you and transfers
    them in the next requests.

**Terminal**

  * **The Terminal soft-wraps lines better -** Previously, the Terminal
    could occasionally break links when wrapping lines, and some lines
    were wrapped improperly. Now, when you run a command that outputs a
    long line, the Terminal soft-wraps it gently, keeping all the links
    in the working state. If you click a wrapped link, it is immediately
    sent to your browser.

  * **Exit codes for file merge from the command line -** IntelliJ IDEA
    now returns proper exit codes when used as a command line tool for
    merging files. Now you can use IntelliJ IDEA as a merge tool in any
    custom workflow. Also support the --wait command line option for
    editing files from the terminal in a blocking manner.

**Plugins**

  * **Plugins page becomes more ergonomic -** The IDE now displays
    plugin details on the Plugins page in the Settings/Preferences
    dialog right away, so you don’t have to click each plugin one by
    one. Got rid of the Updates tab, and the ‘Update’ button is
    placed near the plugin name on the Installed tab. Added new options
    under the gear icon, allowing you to disable or enable the
    downloaded plugins all at once. Save yourself a bunch of clicks and
    spend them on more important things.

**Kubernetes**

  * **Kubernetes plugin gets Kustomize support** - The new version of
    IntelliJ IDEA 2019.2 with the Kubernetes plugin provides editing
    support for Kustomize with completion for keys and paths, as well as
    many inspections for Kustomize resource files. The Rename
    refactoring now works for renaming the files and directories of the
    Kustomize resource files. You can jump from a path declared in the
    Kustomize resource files to the associated packages or files in the
    Project tool window, with the Ctrl+B/Cmd+B shortcut.

  * **External resources can be added using URLs** - You can now load
    a custom resource definition (CRD) specification from external
    sources using URLs. To add the specifications, go to
    Settings/Preferences | Languages & Frameworks | Kubernetes and add
    URLs to the CRD specification. (Previously, it was possible to add
    a CRD from local files.)
### Updates in 2019.1

#### Features

 **Themes**

  * **Themes customization** - IntelliJ IDEA 2019.1 comes with
    official support for custom themes. Now you can create your own
    theme with ease.

**Java**

  * **Java 12 Switch Expressions (Preview) support** - IntelliJ IDEA
    2019.1 comes with support for the Java 12 Preview feature - Switch
    Expressions according to JEP 325.

  * **Extract variable refactoring enhancements** - The “extract
    variable” refactoring has been significantly improved and it now
    preserves semantics even better than before. The IDE can extract a
    variable even from the field initializer, and the extract variable
    refactoring can convert a ternary to ‘if’ automatically when the
    condition is important. The condition is considered as important if
    it has a null check or the ‘instanceof’ check.

  * **Precise warning highlighting in ternary expressions** - IntelliJ
    IDEA 2019.1 ensures more precise warning highlighting for ternary
    expressions. It will only highlight a condition in which a
    nullability violation is detected (whereas previously it highlighted
    the whole ternary expression, even when the nullability was only
    violated in a single branch).

  * **Improved analysis of mathematical operations** - The data flow
    analysis can track the result of mathematical operations and uses
    this information to warn you about conditions that are always
    true or false.

  * **Inference of constructor’s purity from sources** - IntelliJ
    IDEA 2019.1 improves its support for the @Contract annotations. It
    can now automatically infer the purity of constructors from sources.

  * **Navigation from Java stack trace to the relevant position within a
    line** - When you click on the Java stack trace, the IDE will try
    to determine the exact location within the row to take the cursor
    to. Previously it would only take you to the first column of the
    corresponding row.

  * **Duplicated switch branches detection** - The IDE can now
    detect duplicated switch branches and provides a quick-fix to
    merge such branches.

**Gradle**

  * **Delegation of build and run actions to Gradle set per Gradle
    project** - It’s now possible to delegate build and run actions
    to Gradle for each project individually. Configure this option for
    each Gradle project if your IntelliJ IDEA project consists of
    several Gradle projects. You can even set different values for the
    test runner and the application runner for the same project.

  * **Proper selection of a Gradle test task to run from the editor** -
    IntelliJ IDEA 2019.1 improves support for projects with the several
    Gradle source sets where the test execution is delegated to Gradle.
    Now the IDE correctly resolves which task should be executed when a
    specific test has been run. For choices with multiple options, the
    IDE provides a list of all the tasks that can be run for this
    selected test.

  * **HotSwap works when build actions are delegated to Gradle or
    Maven** - Now, when you are debugging with the build actions
    delegated to Gradle, the HotSwap is triggered, and building a
    project reloads classes.

**Maven**

  * **Maven build output reported to Build tool window** - For
    convenience, all the Maven build output will now be shown in the
    single place - the Build tool window. There is no need to check in
    the Run or Messages windows anymore. You can also toggle the view
    and present the build output as a log.

  * **Improved Maven Diagrams -** Maven diagrams have been enhanced and
    extended with new options. You can easily find the conflicts and
    duplicated dependencies by using ‘Show Conflicts/Duplicates’. To
    view all paths to the node, click ‘Show Paths: Root ->
    Selection‘.

**Version Control**

  * **Fixup and Squash actions were added to VCS log** - Invoke Fixup
    and Squash actions from the context menu of the VCS Log tab, and
    these actions will create commits with the correct fixup! and
    squash! commit messages.

  * **Ability to cherry-pick only some of the files right from the VCS
    log** - With IntelliJ IDEA 2019.1 you can now cherry-pick select
    files from the commit while you are in the VCS log. Simply invoke
    the context menu and choose the “Apply Selected Changes” option.

  * **Indication of incoming and outgoing commits** - There is now the
    option to see the availability of incoming and outgoing commits for
    the individual branches in the Branches popup. You need to switch on
    the ‘Mark Branches that have incoming/outgoing commits in the
    Branches popup’ option in the Preferences/Settings | Version
    Control | Git.

  * **Deleted shelved files can be restored -** You can now view all the
    recently deleted files and restore any useful shelved files. Simply
    use the new “Recently Deleted” node in the Shelf tab of the VCS
    tool window.

  * **New “Uncheck all” checkbox for partial Git commits** - To
    make it more convenient, IntelliJ IDEA adds a new “Uncheck all”
    checkbox to the Diff pane of the Commit Changes dialog, so now you
    can easily uncheck all the code chunks in one go.

  * **Mode to view author initials for VCS annotations** - You can now
    view the initials of the author instead of their full name in the
    VCS annotations. Right-click on the annotation tab and select View |
    Names | Initials from the context menu.

**Diff**

  * **Adding file content to the Blank Diff Window by drag-n-drop** -
    It is possible now to copy & paste text to a Blank Diff window by
    dragging a file to it.

  * **Ability to switch sides of compared files in the diff viewer** -
    You can now swap sides in the diff viewer when you open it with
    Compare two files, Compare with clipboard, or Blank Diff. To toggle
    which file is shown on the right and which on the left, simply
    select Swap Sides.

  * **Preview the difference by char unit** - Now you can view the
    difference by char unit and not only by word unit, as it was
    before in the diff viewer. Could be pretty useful if your source
    code has any lines of characters from different alphabets, for
    example, Japanese.

  * **Recent Locations Popup** - Meet the brand new “Recent
    Locations” navigation popup, which displays all the recently
    visited and changed locations in the code. All the locations that
    you’ve visited are chronologically ordered in this popup with the
    latest location that was visited at the top, and the oldest visited
    locations at the bottom. To call up the new “Recent Locations”
    popup, press Cmd-Shift-E / Ctrl-Shift-E.

**JVM Debugger**

  * **Support ‘synchronized’, ‘assert’ and ‘switch’ in the
    debugger evaluator** - The debugger evaluator now supports
    synchronized statements, assert expressions, and switch statements.

  * **Step out of code block in JVM debugger** - It’s now possible to
    Step Out of the current block while you are debugging the Java
    project. This new action is available from the main menu | Run.

  * **New “Run to mouse pointer” mouse gesture** - Now, if you
    prefer to use the mouse in debug mode, you can hover over a line and
    the IDE will highlight this line, if you then click on a line number
    the IDE will perform the run to cursor action.

**Scala**

  * **Highlighting of for-comprehensions** - IntelliJ IDEA 2019.1 comes
    with enhanced for-comprehensions support including error
    highlighting, implicit hints, and GoTo / Quick Definition / Quick
    Documentation actions.

  * **Find Usages for implicits -** Find Usages can now be invoked on
    implicit definitions, apply / unapply methods, for-comprehension
    methods, and Single Abstract Method (SAM) types.

  * **Decompile to Java -** Now, even if the Scala .class files have no
    sources, you can decompile them to Java.

  * **Customizable Scalafmt version** - IntelliJ IDEA not only lets you
    use a custom Scalafmt version, but the IDE can also now download the
    required version for you.

  * **Separate HOCON plugin** - Extracted the HOCON support into a
    separate repository and plugin, which you can install and uninstall
    on demand.

  * **Error highlighting improvements -** This release significantly
    improves the error highlighting in the number of areas including:

    * Partial unification and type variable unification in general.

    * Constructor highlighting, calls to private constructors.

    * Better-monadic-for compiler plugin: `implicit0` feature.

    * Kind-projector: value level polymorphic lambdas.

    * Simulacrum: higher-arity type constructors.

**Groovy**

  * **Support for Java-style Lambda syntax of Groovy 3.0** - IntelliJ
    IDEA 2019.1 supports the experimental Groovy 3.0 feature - Java-
    style Lambda syntax. The IDE provides editing support for it
    including code completion, highlighting, and type inference. The
    Groovy intentions and inspections will also work properly inside the
    lambda body. Formatting is also available for Java-style lambdas and
    you can debug Java-style lambdas too.

**Kotlin**

  * The Kotlin plugin bundled with the IDE has been updated to v1.3.21

  * **Live Template to generate ‘main’ without parameters** -
    Starting with Kotlin 1.3, you can use the main function without
    parameters. Accordingly, with this release of IntelliJ IDEA, you can
    create the main method without parameters by using the ‘main’
    live template.

  * **String conversion improvements** - The ‘Convert concatenation
    to template’ intention can now remove the unnecessary .toString()
    calls on each parameter.

  * **New intention for converting SAM as lambda to an anonymous
    object** - If you need to convert a construct using lambdas with
    SAM to an anonymous object, use this handy new intention action.

  * **Intention action to improve coroutine code** - When you work with
    coroutines, IntelliJ IDEA suggests adding an “Async” suffix to a
    function returning ‘Deferred’.

**JavaScript & TypeScript**

  * **New intentions for JavaScript destructuring** - IntelliJ IDEA
    2019.1 comes with a set of new refactorings and intentions to help
    you start using destructuring in your JavaScript or TypeScript code.

  * **Intention to convert function with Promise to async/await -**
    Change a function that returns a promise with .then() and .catch()
    calls to an async function that uses the async/await syntax. To use
    this quick-fix, press Alt-Enter on the name of the function and
    select Convert to async function. This is available for TypeScript,
    JavaScript, and Flow.

  * **Updated documentation for CSS and HTML -** The quick documentation
    for CSS properties and HTML tags and attribute (F1 / Ctrl-Q) now
    shows a short description from MDN, including its compatibility with
    the most popular browsers.

  * **Improved JavaScript debugger console -** The interactive debugger
    console in the JavaScript and Node.js debug tool windows now shows
    objects using a tree view, and it supports styling of log messages
    with CSS and grouping them using console.group() and
    console.groupEnd(). Also, it allows you to filter out any type of
    log messages.

**Docker**

  * **Ability to debug inside Docker container -** Now you can attach
    the debugger to a Java application running inside a Docker
    container. The IDE now allows debugging inside containers that are
    built from a Dockerfile or created using Docker compose (docker-
    compose.yml).

**Kubernetes**

  * **External resources support -** IntelliJ IDEA 2019.1 supports
    external resources, which means you can now load a custom resource
    definition specification from external sources. Currently, this is
    only possible from local files. To add the specifications, go to
    Preferences/Settings | Languages & Frameworks | Kubernetes and add
    the path to the custom resource definition specification.

  * **Chart rename refactoring in Helm resource files -** Now it’s
    possible to use the Rename refactoring in the chart of the Helm
    resource template files. Please note that you need to install the
    Go template plugin to enable this support for Helm resource
    template files.

**Editor**

  * **Option to export your Code Style settings to JSON -** It’s
    possible to now export all your code styles settings, even if
    they match the default ones, to JSON from IntelliJ IDEA. Go to
    Preferences/Settings | Editor | Code Style and select the
    option ‘Export | IntelliJ IDEA code style JSON’ from the
    drop-down menu.

  * **Ability to enable soft-wraps depending on file type -** Soft-wraps
    can be limited for specific file types by going to
    Preferences/Settings | Editor | General and using the Soft-wrap
    files field.

  * **The Keymap Configuration Dialog for the Ctrl-Y keystroke on
    Windows -** When you first use the Ctrl+Y keystroke on Windows, the
    Keymap Configuration Dialog will be shown asking you to assign the
    shortcut to either “Delete Line” or “Redo”.

  * **Sublime Text keymap -** Go to Preferences /Settings | Keymap and
    from the Keymap drop-down list, choose Sublime Text – that’s it!
    Now you can use Sublime Text’s shortcuts in IntelliJ IDEA.

  * **VS Code Keymap plugin -** You can now use the pre-configured VS
    Code keymap, which is available as a separate plugin. Install
    this plugin and select the VS Code keymap in Preferences
    /Settings | Keymap.

  * **Support for Java-style Lambda syntax of Groovy 3.0 -** IntelliJ
    IDEA 2019.1 supports the experimental Groovy 3.0 feature – Java-
    style Lambda syntax. The IDE provides editing support for it
    including code completion, highlighting, and type inference. The
    Groovy intentions and inspections will also work properly inside the
    lambda body. Formatting is also available for Java-style lambdas and
    you can debug Java-style lambdas too.

  * **Spring Cloud Stream**

  * **Spring Cloud Stream editing support -** IntelliJ IDEA now provides
    rich editing support for Spring Cloud Stream projects such as syntax
    highlighting, inspections, quick-fixes, and code completion
    (including binder name completion for values and references in the
    application.properties or application.yml files).

  * **Navigation between bound Producers and Consumers -** You can now
    navigate between the bound consuming and producing message handlers
    using the gutter icon. Bear in mind that Consumers and Producers
    should be bound in the application.properties or application.yml
    files via the ‘spring.cloud.stream.bindings’ configuration key.

**Thymeleaf**

  * **Improved Thymeleaf support -** Now you can navigate to template
    fragments referenced in the ‘th: replace’ and ‘th: include’
    attributes. Code completion and the Rename refactorings now also
    work for these included and replaced fragments.

**Database Tools**

  * Support for Greenplum, Vertica, and Apache Hive

  * **IntelliJ IDEA supports these new databases:**

    * Greenplum - an analytics database based on PostgreSQL.

    * Vertica - column-oriented storage designed to handle large
      volumes of data.

    * Apache Hive - a data warehouse built on top of Apache Hadoop for
      providing data query and analysis.

  * **Improved connection dialog** - Refreshed the look of the
    connection dialog and added several important settings. You can
    now add an SQL query in the ‘startup script’ field, which
    will be run each time you establish a connection. Also, you can
    set a timeout after which the IDE will auto-disconnect, or set up
    a time interval to run a query every N seconds to keep the
    connection alive.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 pkgsrc/devel/intellij-ue-bin/Makefile
cvs rdiff -u -r1.1 -r1.2 pkgsrc/devel/intellij-ue-bin/PLIST
cvs rdiff -u -r1.3 -r1.4 pkgsrc/devel/intellij-ue-bin/distinfo
cvs rdiff -u -r1.1 -r1.2 \
    pkgsrc/devel/intellij-ue-bin/patches/patch-bin_idea.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffs are larger than 1MB and have been omitted


Home | Main Index | Thread Index | Old Index