OpenIDEA 0.1.43 adds an allocation and live-object profiler for JVM runs, FTP/FTPS deployment, Django templates, notebook code intelligence, custom ACP agents with a command policy, Kotlin debugging, Bun debugging, run configuration folders in Services and a custom local data directory, and ships Plugin API 1.6.
Download
| Architecture | Windows | macOS | Linux |
|---|---|---|---|
| x86-64 (64-bit) | EXE MSI Portable | Intel | AppImage DEB RPM |
| AArch64 (ARM64) | EXE MSI Portable | Apple Silicon | AppImage DEB RPM |
Remote development: openidea-server for Linux x86-64 · Linux ARM64 · macOS x86-64 · macOS ARM64, each with a .sha256 file.
Already installed? OpenIDEA updates itself: use Check for Updates.
What's new
Run, debug and profile
- Profiler for JVM runs: allocations and live objects.
- Debug Kotlin with kotlin-lsp's debugger, and Bun files with bun-dap; a Bun run configuration type.
- Each test's console output in the test tree, and a group's when it is selected; Run and Debug consoles show output again where they had stopped.
- Services group run configurations by their folders, with Run / Restart / Stop All per folder, and show only the services you added.
- Java: Delegate IDE build/run actions to Maven; jdtls imports Gradle builds with the build settings and on the IDE's Gradle JVM; Maven build plugins that don't resolve are explained; compile builds skip JaCoCo instrumentation.
- Tomcat rebuilds the WAR when web resources or dependency modules change; Delve offers to reinstall when it is too old, and its build output is cleaned up.
Languages and editor
- Django templates, and completion, hover, diagnostics and navigation in notebook cells.
- Kotlin: kmp-lsp as an alternative language server. Go: upgrades, vulnerabilities and deprecated modules when
go.modopens. - Java
.varintroduces a variable of the expression's type; JavaDoc text is coloured as a doc comment; navigation and usages resolve against the text just typed. - Code vision position per hint and a "no usages" switch; implementation gutter icons for the whole file;
<>pairs where a generic type list starts; add and remove a UTF-8 BOM; a chosen file encoding survives on-disk changes. - Color Scheme pages for C#, Python (PyCharm's full model) and Console Colors for the terminal's ANSI colours;
.xmlscheme import.
Version control
- Diffs in a separate window; added or deleted files as one full-width pane; left line numbers next to the divider; smooth scrolling between differences again.
- Correct status and git operations after a case-only rename on case-insensitive disks; local changes listed when git can't read a directory; F4 opens the source file in the changes trees.
Deployment, Docker and remote
- FTP and FTPS deployment servers; download Remote Host items to a folder or by dragging.
- Pick an SSH configuration for TCP/SSH Docker connections; tags of one image stay apart in the Docker tree.
AI agents
- Create, remove and import custom ACP agents; a command execution policy for ACP agents; Cursor effort and Fast as separate options.
- Accept worktree task changes into the local checkout; local task rollback keeps your files when git converts line endings or HEAD moved.
- The built-in MCP server runs the IDE's tools without confirmation in brave mode.
Workbench and settings
- Custom local data directory with one-click migration.
- Pin / Unpin Tab and the Dock Unpinned / Undock view modes for tool windows; Go to File and Search Everywhere list directories.
- Export the current keymap as JSON; a warning when the OS grabbed an IDE shortcut.
- Associated documents open with the system application; terminals activate the project's conda environment.
- Plugin marketplace that helps pick plugins; installed plugins link to their marketplace homepage.
Plugin API 1.6
- Bounded, host-owned background WebSockets; versioned document subscriptions (
document-changedfor named paths) and background document edits.
All changes (148 pull requests)
- feat(plugins): a marketplace that helps pick plugins by @l0ng-ai in #2718
- docs: add Alipay and WeChat Pay sponsor QR codes by @l0ng-ai in #2723
- docs: show sponsor QR codes at the same size with labels by @l0ng-ai in #2725
- fix(vcs): open the source file on F4 in the changes trees by @l0ng-ai in #2729
- fix(agents): start and delete tasks without waiting on slow git work by @l0ng-ai in #2732
- feat(java): run jdtls's Gradle import with the build settings by @zmh69695328 in #2701
- fix(java): import Gradle builds on the JVM the IDE's Gradle runs use by @l0ng-ai in #2736
- fix(editor): use JSX comments for expression children by @ffgenius in #2703
- fix(project): keep workspace project icons stable on removal by @shohruh-genius in #2699
- fix(perf): name language server memory rows by their workspace root by @muutot in #2702
- fix(editor): start every selected row at the same left edge by @w4terlaw in #2724
- feat(editor): code vision position per hint and a "no usages" switch by @w4terlaw in #2716
- feat(editor): add and remove UTF-8 BOM by @YannABC in #2717
- feat(mcp): run the IDE's tools without confirmation in brave mode by @l0ng-ai in #2741
- feat(terminal): activate the project's conda environment in new terminals by @l0ng-ai in #2742
- feat(build-tools): a Skip Tests toggle for the Gradle tool window by @Inf1mum in #2734
- fix(ui): stop double-clicking tree rows from selecting label text (#2713) by @Inf1mum in #2726
- fix(debugger): offer to reinstall Delve when it is too old for the Go toolchain by @Inf1mum in #2730
- fix(color-scheme): import .xml scheme files and tolerate real-world IDEA variants (#2714) by @Inf1mum in #2731
- fix(lsp): hint when Vue 2 Options API template navigation lacks strictFunctionTypes by @Inf1mum in #2728
- Group Python color attributes as PyCharm does by @muutot in #2735
- feat(services): show only services the user added by @qtvbwfn in #2740
- fix(plugins): plugins reach a project window group's member files by @Inf1mum in #2739
- fix(libraries): write only SDKs in angle brackets under External Libraries by @l0ng-ai in #2743
- fix(java): explain a Maven build plugin that doesn't resolve when m2e only logs it by @l0ng-ai in #2745
- feat(vcs): 支持在独立窗口中显示差异 by @wangjunboit in #2231
- feat(profiler): profile allocations and live objects of JVM runs by @ntbang0901 in #2650
- fix(linux): keep the first-map hint under Mutter's auto-maximize share by @Inf1mum in #2520
- fix(tomcat): rebuild the WAR when web resources outside src change (#2685) by @a-rookie-of-C-language in #2722
- test(lsp): go.mod/go.work reach gopls with the language id it understands (#2248) by @a-rookie-of-C-language in #2719
- feat(agents): accept worktree task changes into the local checkout by @a-rookie-of-C-language in #2704
- feat(agents): create, remove and import custom ACP agents (#228) by @a-rookie-of-C-language in #2690
- feat(agents): add command execution policy for ACP agents by @elfadl in #1165
- fix(build): skip JaCoCo instrumentation in IDE compile builds by @misswell in #2686
- feat(agents): expose Cursor effort and Fast as separate options by @renyun2 in #2705
- fix(i18n): drop repeated zh catalog keys and test that every key appears once by @l0ng-ai in #2752
- fix(plugins): refuse a command while its plugin waits for an answer in another window by @l0ng-ai in #2753
- feat(http-client): go to a {{variable}}'s definition by @l0ng-ai in #2754
- feat(color-scheme): add a C# page to Settings › Editor › Color Scheme by @l0ng-ai in #2756
- fix(run): open .NET Project configurations as the form with a project field by @l0ng-ai in #2757
- fix(lsp): ask again when a server withdraws a rename while analysing by @l0ng-ai in #2762
- fix(libraries): list the JDK for an .idea project only when it is a Java one by @l0ng-ai in #2765
- fix(platform): open only http(s) and mailto URLs externally by @rohitdanda in #2755
- feat(editor): opt-in smart-key auto-pair for angle brackets (<>) by @Inf1mum in #2738
- feat(docker): pick an SSH configuration host for TCP/SSH connections by @Inf1mum in #2737
- feat(settings): complete the Python color page as JetBrains' full model by @muutot in #2761
- feat(settings): Color Scheme › Console Colors for terminal ANSI (#2698) by @GGVidal in #2751
- feat(settings): custom local data directory with one-click migration (#1722) by @a-rookie-of-C-language in #2677
- fix(i18n): restore the comma missing after the local data directory strings in zh.json by @l0ng-ai in #2771
- feat(debugger): debug Kotlin with kotlin-lsp's debugger by @ntbang0901 in #2651
- fix(plugins): accept empty navigation anchor ranges as positions by @l0ng-ai in #2773
- feat(deployment): download Remote Host items to a chosen folder or by dragging by @l0ng-ai in #2780
- refactor(settings): open Project Structure only as its own dialog by @l0ng-ai in #2744
- fix(editor): keep syncing edits after a document snapshot fails by @rohitdanda in #2777
- fix(editor): correct library source encoding and Reload with Encoding by @usongon in #2775
- fix(agents): roll a local task back to where it started when HEAD moved by @rohitdanda in #2774
- fix(agents): attach files dropped from outside the project by @EjaYF in #2767
- feat(vcs): 并排对比左栏行号移到分隔线一侧,与 IDEA 一致 by @PLZY in #2776
- fix(vcs):对比视图的标题和搜索栏跟随分栏对齐,标题显示版本号和文件路径 by @PLZY in #2778
- feat(vcs): 新增或删除的文件对比时单栏全宽显示 by @PLZY in #2779
- feat(search): list directories in Go to File and Search Everywhere by @l0ng-ai in #2783
- feat(go): report upgrades, vulnerabilities and deprecated modules when go.mod opens by @l0ng-ai in #2787
- feat(languages): Django templates by @andreabasile in #2781
- fix(terminal): invalidate selection highlight cache on scrollback trim by @dengliu in #2784
- fix(build-tools): Execute Maven Goal / Gradle Task 点击补全项改为选中,不再追加累加 by @PLZY in #2785
- fix(vcs): stop filtered logs from fanning one dashed lane per merge path (#2670) by @Inf1mum in #2788
- fix(usages): say at once that Show Usages is searching by @l0ng-ai in #2760
- feat(hotkeys): warn when the OS grabbed an IDE shortcut (#1876) by @a-rookie-of-C-language in #2683
- fix(java): resolve navigation and usages against the text just typed by @l0ng-ai in #2759
- fix(vcs): smooth-scroll again when moving between differences by @l0ng-ai in #2795
- test: add framework_files to the LanguageConfig literals in ide-dap and ide-lsp tests by @l0ng-ai in #2796
- fix(debugger): clean up Delve's build and hide Run/Debug when their last tab closes by @l0ng-ai in #2797
- fix(vcs): open a log commit's file diffs in one reusable preview tab by @l0ng-ai in #2798
- fix(vcs): list local changes when the work tree has a directory git can't read by @l0ng-ai in #2800
- fix(app): keep the window responsive while local history, shelves and run files load by @rohitdanda in #2789
- fix(platform): keep delivering IDE events after one handler throws by @rohitdanda in #2790
- fix(editor): keep a chosen file encoding when the file changes on disk by @rohitdanda in #2792
- fix(workspace): keep repeated inserts at one position in workspace edits by @rohitdanda in #2793
- fix(vfs): retry saving on Windows while another process briefly holds the file by @rohitdanda in #2791
- fix(lsp): open network-share files and upper-case drive letters from language servers by @rohitdanda in #2794
- test(deployment): cover Remote Host Download to… wiring (#2748) by @GGVidal in #2763
- feat(viewers): open associated documents with the system application by @panda-student in #2720
- test(i18n): fail on keys a locale catalog defines twice by @l0ng-ai in #2804
- feat(lsp): say when tsserver runs out of memory by @l0ng-ai in #2805
- feat(kotlin): offer kmp-lsp as an alternative Kotlin language server by @l0ng-ai in #2806
- feat(toolwindows): Dock Unpinned and Undock view modes by @formiat in #2802
- feat(toolwindows): Pin / Unpin Tab pins a tool window's selected tab by @l0ng-ai in #2807
- feat(deployment): FTP and FTPS deployment servers by @l0ng-ai in #2812
- fix(deps): resolve mermaid's katex to 0.18 (GHSA-238p-pmpm-9mq7) by @rohitdanda in #2808
- fix(sdk): find uv Pythons and Poetry virtualenvs on Windows and Linux by @rohitdanda in #2810
- fix(keymap): distinguish the two Rename entries and let the keymap own the project view's shortcuts by @Inf1mum in #2811
- fix(vcs): keep author and time visible in Update Info, and make it resizable by @l0ng-ai in #2813
- fix(run): show Run and Debug console output again by @l0ng-ai in #2817
- feat(run): show each test's console output, and a group's when it is selected by @l0ng-ai in #2819
- fix(keymap): run a matching keyWhen before a keyWhenless action on a shared stroke by @Inf1mum in #2818
- fix(agents): keep the user's files out of a local task's rollback when git converts line endings by @rohitdanda in #2816
- fix(java): pass jdtls the compiler defaults as a file URI by @l0ng-ai in #2820
- fix(markdown): redraw a Mermaid diagram's full-screen view when the diagram is redrawn by @l0ng-ai in #2821
- test(e2e): wait for the start-up splash in the workbench fixture by @l0ng-ai in #2822
- test(agents): give the Claude command discovery test's waits a 10 s bound by @l0ng-ai in #2823
- docs(java): note the ECJ vs javac divergence for generic calls in boolean conditions by @Inf1mum in #2825
- feat(database): pick up data sources edited on disk without reopening the project by @brunobelloni in #2826
- feat(notebook): completion, hover, diagnostics and navigation in notebook cells by @rohitdanda in #2824
- fix(java): let Maven Application launches build with project javac by @GGVidal in #2828
- fix(problems): show the active notebook's diagnostics in the File tab by @l0ng-ai in #2829
- fix(plugins): unwind host process/net timeouts as guest errors instead of trapping by @dengliu in #2831
- fix(workbench): clear orphaned maximized state when a tool window unregisters by @dengliu in #2830
- fix(agents): don't show +0 −0 for binary files in a task's changes by @l0ng-ai in #2833
- fix(ci): ignore the Django parser terms in knip and fix two flaky tests by @l0ng-ai in #2835
- fix(lsp): don't start a second jdtls for module-folder queries or a new workspace layout by @l0ng-ai in #2837
- fix(plugins): raise process stdout limit to 16 MiB and surface truncation by @dengliu in #2838
- fix(editor): compute implementation gutter icons for the whole file by @l0ng-ai in #2848
- fix(agents): close sessions popup before delete confirmation by @GGVidal in #2845
- feat(plugins): add bounded background WebSockets by @SorPuti in #2544
- test(plugins): match the process output test to the 16 MiB stdout limit by @l0ng-ai in #2855
- fix(plugins): scale Wasm fuel budget proportionally for background tasks by @dengliu in #2850
- fix(welcome): show the live git branch on recent projects by @GGVidal in #2851
- feat(keymap): export the current keymap as JSON by @a-rookie-of-C-language in #2852
- chore(bindings): regenerate after the recent-project branch doc change by @l0ng-ai in #2860
- feat(agents): close the agent task tab in focus, or close it and start a new task by @l0ng-ai in #2862
- fix(terminal): keep IME-committed spaces as ASCII spaces by @l0ng-ai in #2866
- fix(search): keep Find in Files preview matches readable over syntax colours by @formiat in #2863
- test: fix two main failures (theme template tokens, maximized update notifications) by @l0ng-ai in #2869
- fix(http-client): Select All and Copy in the response pane by @l0ng-ai in #2871
- fix(vcs): status and git operations after a case-only rename on case-insensitive disks by @l0ng-ai in #2881
- fix(plugins): link installed plugins to their marketplace homepage by @l0ng-ai in #2883
- feat(templates): Java .var introduces a variable of the expression's type by @l0ng-ai in #2886
- feat(services): group run configurations by their folders by @l0ng-ai in #2887
- fix(services): keep rows of one image's tags apart in the Docker tree by @l0ng-ai in #2842
- test(evals): measure Java code intelligence as the user sees it by @l0ng-ai in #2758
- fix(editor): show usage counts that came back incomplete for a moment by @l0ng-ai in #2857
- fix(editor): colour a JavaDoc's text as a doc comment, as IntelliJ does by @Clarence404 in #2885
- fix(lsp): decode semantic tokens with negative deltas instead of shifting the rest of the file by @HL-slc in #2890
- feat(plugins): add document WebSocket subscriptions by @SorPuti in #2610
- feat(debugger) add support for bun-dap, debugger bun runtime by @morf-bls in #2478
- fix(navigation): say it is finding the target until the target shows by @l0ng-ai in #2870
- fix(plugins): keep command edits undoable and accept WebSocket URLs by @l0ng-ai in #2892
- fix(vcs): don't run repository filters in the restricted git status fallback by @l0ng-ai in #2893
- fix(deployment): keep local files on a failed FTP download and don't hang on mkdir by @l0ng-ai in #2894
- fix(deployment): don't download through symbolic links out of the chosen folder by @l0ng-ai in #2895
- fix(settings): leave registry agent installs in place when moving local data by @l0ng-ai in #2896
- fix(agents): accept worktree changes at repository paths, renames included by @l0ng-ai in #2898
- perf(editor): find the token before < directly in Kotlin and C# by @l0ng-ai in #2899
- chore(plugins): rebuild checked-in components for the current SDK and WIT by @l0ng-ai in #2900
- fix: FTP download temp files, CRLF and case-only renames in Accept, IPv6 loopback WebSockets by @l0ng-ai in #2901
- fix(deploy): don't download or delete through links that leave the mapped folder by @l0ng-ai in #2907
- fix(agent): roll back renames to their old path by @l0ng-ai in #2909
- fix(ui): show full labels in the commit panel, console preview and install hints by @l0ng-ai in #2916
New contributors
Thanks to everyone who contributed for the first time:
- @YannABC made their first contribution in #2717
- @wangjunboit made their first contribution in #2231
- @renyun2 made their first contribution in #2705
- @rohitdanda made their first contribution in #2755
- @usongon made their first contribution in #2775
- @formiat made their first contribution in #2802
- @SorPuti made their first contribution in #2544
- @HL-slc made their first contribution in #2890
- @morf-bls made their first contribution in #2478
Full Changelog: v0.1.42...v0.1.43