github l0ng-ai/openidea v0.1.43
OpenIDEA v0.1.43

58 minutes ago

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.mod opens.
  • Java .var introduces 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; .xml scheme 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-changed for 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:

Full Changelog: v0.1.42...v0.1.43

Don't miss a new openidea release

NewReleases is sending notifications on new releases.