OpenIDEA 0.1.41 adds JUnit and JAR Application run configurations, ESLint for JavaScript and TypeScript, an HTTP client that converts to and from cURL, Docker Compose support, rollback of an agent's changes, MCP servers for coding agents, a Navigation Bar, Oracle databases, and ships Plugin API 1.5.
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
AI and MCP
- Roll back an agent task's changes, and quote a mouse selection into the composer with a floating Quote button.
- MCP servers for coding agents: configure them once in Settings › Agents (with import), and they are passed to every agent.
- Streaming replies update incrementally; finished turns fold, approvals collect in one tray, and agents are configured on a single Settings › Agents page.
- Several questions from an agent are paged with tabs; session and terminal tabs show running/done status.
- OMP is available as a built-in agent; errors show the details the agent sent.
Plugins (Preview)
- Plugin API 1.5 (
openidea:plugin@1.5.0); plugins built for earlier 1.x versions keep loading. - Plugins can depend on each other and declare extension points, read a project file's bytes and send notifications to one project.
net:ask: a plugin may ask once before connecting to a host its manifest doesn't list.- Plugin formatters are chosen in Code Style › Formatter; plugin commands show a running state on their toolbar button.
Run and debug
- JUnit and JAR Application run configurations (including import); JUnit runs with the build's JDK.
- Debug C/C++ with GDB's native DAP interpreter.
- Stop ends the whole launched process tree; Maven, Gradle and script debugging output appears in the Debug console.
- Java launches rebuild when output folders were deleted outside the IDE, and external edits are recompiled after a restart.
Languages and editor
- ESLint diagnostics for JavaScript and TypeScript.
- Java: language levels 5 through 25, download sources from decompiled library views, and a notice explaining why a Maven module has no code intelligence when a build plugin doesn't resolve.
- Maven: Generate Sources and Update Folders, builds that reuse artifacts already in the local repository, and
~/.m2/settings.xmlrepositories for library jars. - MyBatis navigation and completion for namespaces,
resultMap,sql/include,@ResultMapand#{}in annotation SQL. - npm package version completion in
package.json; Arduino sketch code intelligence; reStructuredText highlighting and outline. - Rainbow indent guides, Vim
af/iffunction text objects, a selection foreground colour in colour schemes, and Ctrl/⌘+wheel zoom that applies to all editors. - Completion shows names and types in separate columns; quick fixes match their diagnostics.
- Import settings straight from an installed JetBrains IDE, or an IntelliJ IDEA keymap XML.
HTTP client
- Convert requests to and from cURL, and add environment files; environment files are read in the encoding the editor detects (BOM, UTF-16, GBK).
Database
- Oracle (thin driver, packages) and StarRocks connections.
- JSON, boolean and enum cell editors with Set NULL / Set DEFAULT; submit or revert pending console edits from the keyboard.
Docker
- Docker Compose: detection, gutter run, Services grouping, schema and reference completion/navigation; remote development forwards Compose service ports.
Version control
- Show branch and incoming/outgoing commits beside repository roots (opt-in in Settings › Version Control › Git).
- Compare tool window lists files and opens each diff in the editor, with Jump to Source and Swap Sides; Compare with Revision and Show Current Revision for files.
- Git blame commit popup with per-commit gutter colours; faster Git log indexing and commit details.
- Push target branch completion, Move Worktree, drag unversioned files onto a changelist, and
~/.ssh/confighost aliases for remotes.
Desktop
- Navigation Bar at the top, in the status bar or hidden.
- Closing the last project window closes it instead of returning to Welcome; terminal font size changes with Ctrl/⌘+wheel.
- Search Everywhere has a resizable preview; window zoom is one step on macOS.
OPENIDEA_LOCAL_DATA_DIRmoves rebuildable local data; the startup failure page names an outdated system web engine.
All changes (199 pull requests)
- fix(settings): stop a theme picked earlier staying previewed in the Settings window by @ntbang0901 in #2343
- fix(app): keep manual update check answers visible by @l0ng-ai in #2385
- fix(run): resolve stack frames from all exact source names by @l0ng-ai in #2313
- feat: project semantic index — navigation without a language server (Vue/TS/JS/HTML) by @qtvbwfn in #1593
- fix(window): preserve fullscreen when adding macOS project tabs by @l0ng-ai in #2389
- fix(workbench): keep empty editor hints aligned when an action is unbound by @ntbang0901 in #2345
- feat(arduino): add Arduino Language Server code intelligence and tool discovery for .ino by @mushketer888 in #2177
- fix(markdown): stop inline Mermaid diagrams rendering black by @lzskyline in #2322
- fix(vcs): centre the diff viewer's revert controls by @ntbang0901 in #2346
- fix(project-tree): keep remote paths away from the local file manager by @ntbang0901 in #2340
- fix(editor): share go-to-definition requests per word and let the latest gesture win by @ntbang0901 in #2344
- feat(agents): page multiple questions with tabs and a stable height by @panda-student in #2297
- feat(app): close the last window instead of returning to Welcome by @lzskyline in #2321
- feat(workbench): add the Navigation Bar with a top / status bar / hidden position choice by @muutot in #2317
- perf(terminal): add a full-screen TUI scenario by @brunobelloni in #2251
- fix(editor): show a completion's type, not its whole signature, in the right column by @ntbang0901 in #2367
- fix(terminal): keep session and search controls visible by @l0ng-ai in #2379
- feat(editor): reStructuredText highlighting and section outline by @wildcatDownstairs in #2376
- fix(ui): keep Git and diff toolbar icons at 16px by @l0ng-ai in #2372
- test(vcs): use document-start shortcut in large diff checks by @l0ng-ai in #2401
- fix(editor): separate completion names from field types by @l0ng-ai in #2402
- feat(editor): expose existing Git context menu actions by @l0ng-ai in #2404
- fix(boot): ignore ResizeObserver loop notifications by @l0ng-ai in #2405
- fix(vfs): ignore access events before watcher processing by @l0ng-ai in #2406
- fix(agents): redraw mermaid diagrams when the theme changes by @panda-student in #2354
- fix(editor): keep IME keys away from every text field's key handlers by @ntbang0901 in #2364
- fix(vcs): keep the caret visible when navigating between differences by @HandsomeXi in #2395
- fix(ui): retain dialog focus and copy text through the native clipboard by @l0ng-ai in #2403
- fix(console): align toolbar icons and narrow search layout by @l0ng-ai in #2387
- fix(run): support JAR application configurations by @l0ng-ai in #2409
- feat(vcs): select the branch name and offer to unset its upstream when renaming by @HandsomeXi in #2398
- fix(settings): align forms and sidebar with IntelliJ by @l0ng-ai in #2388
- fix(vcs): stop hover flicker while scrolling the Git log by @shohruh-genius in #2358
- feat(vcs,ssh): resolve ~/.ssh/config Host aliases for git remotes by @dengliu in #2399
- fix(editor): match quick fixes to their diagnostics by @l0ng-ai in #2411
- feat(python): highlight docstring tags and keywords by markup format by @muutot in #2369
- feat(app): import settings straight from an installed JetBrains IDE by @ntbang0901 in #2380
- fix(run): keep the Run/Debug Configurations toolbar visible with a long list by @EjaYF in #2384
- feat(markdown): highlight search and selected word occurrences in preview by @dengliu in #2413
- fix(editor): show callable completion result types once by @l0ng-ai in #2419
- feat(java): download sources from decompiled library views by @l0ng-ai in #2421
- feat(vcs): add file revision context actions by @l0ng-ai in #2422
- feat(database): JSON-aware value editor for json cells by @Inf1mum in #2410
- fix(run,debug): Stop ends the whole launched process tree by @Inf1mum in #2416
- fix(project): refresh ignored state when rules change by @l0ng-ai in #2423
- fix(astro): resolve TypeScript SDKs and install astro-ls by @ferivoq in #713
- feat(plugins): add per-command run target workdir arguments by @l0ng-ai in #2424
- feat(database): boolean and enum cell editors with Set NULL / Set DEFAULT (phase 1 of #2331) by @Inf1mum in #2415
- fix(app): keep used settings profiles in a scrollable picker by @l0ng-ai in #2425
- fix(agents): handle conversation loading failures by @l0ng-ai in #2426
- feat(plugins): validate run target launches by @l0ng-ai in #2427
- fix(editor): IDEA's text insets and selection painting by @w4terlaw in #2420
- fix(data): use isolated write probes and correct migration guidance by @l0ng-ai in #2430
- fix(mcp): report window focus changes immediately by @l0ng-ai in #2431
- fix(project-tree): reveal library classes in registered archives by @l0ng-ai in #2432
- chore(plugins): remove official excalidraw plugin in favor of dengliu.excalidraw by @dengliu in #2391
- feat(docker): add Compose detection, banner, gutter run and unified Services group by @dengliu in #2429
- fix(editor): prevent duplicate Linux clipboard commands by @l0ng-ai in #2392
- feat(agents): running/done status indicators on session and terminal tabs (#2233) by @a-rookie-of-C-language in #2274
- fix(go): resolve Delve targets with the selected compiler by @shohruh-genius in #1997
- fix(plugins): confine resolved write destinations by @l0ng-ai in #2436
- fix(dev): keep the dev identity of a moved checkout by @lleviathe in #2078
- test(smoke): smoke-test PHP on a php-app fixture by @lleviathe in #2189
- ci: build nightly versions twice a day by @l0ng-ai in #2136
- feat(plugins): ask at first connect to a host the manifest does not list (net:ask) by @Inf1mum in #2417
- fix(ci): make main's format check and platform-specific tests pass by @l0ng-ai in #2477
- feat(dap): debug C/C++ with GDB's native DAP interpreter by @Inf1mum in #2412
- refactor(plugins): run only programs in plugin run targets by @l0ng-ai in #2490
- docs: remove docs/ and keep plugin docs in plugins/ by @l0ng-ai in #2503
- fix(keymap): keep Shift+F6 as a rename fallback in the Eclipse preset by @a-rookie-of-C-language in #2498
- fix(build): scope Build Artifacts to the active file's module by @a-rookie-of-C-language in #2491
- fix(editor): make Ctrl+wheel font zoom apply to all open editors by @a-rookie-of-C-language in #2488
- fix(vcs): let Git Log ref labels size to content by @a-rookie-of-C-language in #2450
- fix(boot): ignore ResizeObserver loop also when delivered as an Error by @a-rookie-of-C-language in #2474
- fix(db): connect to StarRocks via a MySQL-compatible preset by @a-rookie-of-C-language in #2463
- fix(vcs): make side-by-side diff divider draggable by @a-rookie-of-C-language in #2441
- feat(vcs): show worktree diff in the Compare tool window with Jump to Source and Swap Sides by @a-rookie-of-C-language in #2486
- fix(vcs): dedupe recent date filters by label by @a-rookie-of-C-language in #2454
- fix(maven): recognize POMs with non-UTF-8 declared encodings by @a-rookie-of-C-language in #2495
- feat(mybatis): navigate namespace, resultMap and sql/include refs by @a-rookie-of-C-language in #2473
- feat(scheme): support a selection foreground colour by @a-rookie-of-C-language in #2464
- perf(vcs): speed up git log indexing, commit details, and blame commit reveal by @dengliu in #2483
- feat(agents): incremental streaming, folded turns, approval tray and one Settings › Agents page by @l0ng-ai in #2511
- docs: add the Mintlify documentation site by @l0ng-ai in #2528
- fix(i18n): translate data-held labels and unify zh terms by @l0ng-ai in #2529
- fix(agents): let F7 move on to the next changed file in an agent task's diff by @NealimeKenna in #2534
- docs(readme): link the documentation site by @l0ng-ai in #2536
- docs(readme): remove the Contributors section by @l0ng-ai in #2537
- fix(libraries): read dependency jars from the configured Gradle home by @zmh69695328 in #2466
- docs(readme): drop the portable zip note and link contributing by @l0ng-ai in #2539
- fix(libraries): find Maven jars in the local repository set by ~/.m2/settings.xml by @l0ng-ai in #2540
- feat(mybatis): navigate and complete #{} in annotation SQL (#2461) by @a-rookie-of-C-language in #2530
- feat(agents): add OMP as a built-in agent by @silencezhang7 in #2458
- feat(mybatis): navigate and complete @resultMap ids (#2461) by @a-rookie-of-C-language in #2533
- fix(run): retry the port-file read in stop_tree tests by @a-rookie-of-C-language in #2541
- fix(boot): keep starting after an unhandled rejection by @l0ng-ai in #2545
- fix(vcs): handle repositories nested below a non-Git project root by @l0ng-ai in #2546
- fix(archive): handle multibyte ZIP paths on Windows by @xtr-hub in #2516
- fix(plugins): keep line-marker gutter icons inside their column by @Moler1995 in #2481
- fix(vcs): offer both ignore destinations in the changes view by @muutot in #2499
- fix(ui): keep dialogs below the macOS window buttons by @EjaYF in #2523
- fix(ui): the main menu button follows the tool window stripe by @Clarence404 in #2538
- fix(plugins): keep a shim's name when pinning a process program by @zaojiaoci in #2012
- fix(security): run credential store access off the async runtime by @devadapter in #2459
- fix(http): read environment files saved with a byte order mark by @l0ng-ai in #2547
- fix(debugger): keep the selected tab when a step finishes by @l0ng-ai in #2548
- fix(kotlin): colour annotation names as annotations by @l0ng-ai in #2549
- fix(refactor): type a chained call by its last call in Introduce Variable by @l0ng-ai in #2551
- fix(hierarchy): let the hierarchy tab be closed by @l0ng-ai in #2552
- fix(hierarchy): show no expand arrow on types without subtypes by @l0ng-ai in #2553
- fix(format): reformat with the Code Style indent, not the detected one by @l0ng-ai in #2554
- fix(vcs): show feedback for explicit Git commands by @l0ng-ai in #2444
- fix(run): align configuration dialog forms and sidebar by @l0ng-ai in #2485
- fix(run): align test runner status icons and filters by @l0ng-ai in #2487
- fix(search): align Find and Usages icons with IntelliJ by @l0ng-ai in #2493
- fix(search): align Search Everywhere layout and preview split by @l0ng-ai in #2496
- fix(agents): preserve upward scrolling during streaming replies by @l0ng-ai in #2502
- fix(maven): run generated build-tool goals with the configured JDK by @ppxb in #2440
- fix(dap): keep output events whose text isn't UTF-8 by @l0ng-ai in #2561
- fix(agent): show the details an agent sends with an error by @l0ng-ai in #2563
- docs: add security policy for private vulnerability reports by @l0ng-ai in #2449
- fix(mybatis): find a mapper's XML by searching for its namespace by @l0ng-ai in #2565
- fix(workbench): keep the resize cursor while dragging a splitter by @makise2060 in #2560
- fix(vim): run a key typed right after a Normal-mode IME composition as a Vim command by @rkdgusxo66 in #2564
- feat(vcs): drag unversioned files onto a changelist to add them by @panda-student in #2531
- feat(vcs): add git blame commit popup and per-commit gutter colors by @dengliu in #2484
- feat(markdown): add full-screen preview and PNG export to Mermaid diagrams by @panda-student in #2460
- feat(editor): rainbow indent guides by @mansur-akhmadi in #1751
- feat(keymap): import an IntelliJ IDEA keymap XML by @ntbang0901 in #716
- feat(db): Oracle thin driver and package nodes by @boenkkk in #2129
- feat(project): resolve navigation into attached dependency projects by @muutot in #2448
- fix(window): zoom to the work area in step with the webview frames by @IsGuibo in #1450
- feat(docker): Compose schema association and internal reference completion/navigation by @dengliu in #2455
- fix(project): detect project types and honor workspace type sorting by @shohruh-genius in #2522
- fix(nav): answer unresolved names only from dependency roots by @l0ng-ai in #2569
- fix(python): name conda environments after their prefix on Windows by @l0ng-ai in #2571
- feat(java): offer every Java language level, 5 through 25 by @l0ng-ai in #2575
- fix(editor): collapse empty icon gutters by @muutot in #2566
- feat(ui): numeric mnemonics in the Select In popup by @muutot in #2567
- fix(editor): anchor color picker and complete color controls by @ffgenius in #2568
- feat(editor): fall back to type-hierarchy subtypes for gutter markers by @muutot in #2434
- feat(editor): lean location chooser rows with the container column by @muutot in #2482
- fix(project-structure): list only configured projects as dependency candidates by @muutot in #2572
- fix(vcs): open the source file on double-click in the modal Local Changes by @aconeshana in #2500
- fix(i18n): restore the missing commas in the en and zh text catalogs by @l0ng-ai in #2576
- fix(i18n): say 依赖于 for project dependencies in Chinese by @l0ng-ai in #2577
- feat(plugins): read a project file's bytes (API 1.5) by @Inf1mum in #2524
- feat(plugins): let plugins depend on each other and declare extension points (API 1.5) by @ntbang0901 in #2383
- fix(debugger): show the output of Maven, Gradle and script debugging in the Debug console by @l0ng-ai in #2578
- feat(project-view): option to hide the path beside project roots by @l0ng-ai in #2579
- fix(refactor): make the preview and pull/push members dialogs resizable by @l0ng-ai in #2583
- fix(run): use the environment of the project root for a Django project in src/ by @andreabasile in #2580
- fix(editor): group plugin gutter links by line and icon by @arnaud-ritti in #2574
- fix(vfs): poll the whole tree when inotify runs out of watches by @mansur-akhmadi in #1916
- feat(maven): generate sources and update folders by @l0ng-ai in #2585
- feat(vim): af / if function text objects by @l0ng-ai in #2586
- fix(vcs): update and push only the repository whose branch menu was used by @pdasilem in #2584
- fix(boot): name an outdated system web engine on the startup failure page by @l0ng-ai in #2587
- fix(maven): build with artifacts the local repository already has by @l0ng-ai in #2588
- fix(agents): read a restored session's conversation after connecting by @l0ng-ai in #2589
- fix(agents): offer each Claude model's effort levels before its first session by @l0ng-ai in #2590
- fix(navigation): show usages on a declaration a plugin adds targets to by @l0ng-ai in #2591
- feat(http): convert requests to and from cURL, add environment files by @l0ng-ai in #2592
- feat(agents): add MCP Servers configuration page and ACP wiring by @dengliu in #789
- feat(lsp): lint JavaScript and TypeScript with ESLint by @l0ng-ai in #2594
- feat(vcs): move a worktree to another folder by @l0ng-ai in #2595
- feat(dependencies): complete npm package versions in package.json by @l0ng-ai in #2596
- feat(run): JUnit run configurations by @l0ng-ai in #2597
- feat(agents): roll back an agent task's changes by @l0ng-ai in #2599
- fix(php): remove unsupported --stdio argument from Laravel LSP by @tiagodiana in #2598
- test(i18n): JUnit stays JUnit in every locale by @l0ng-ai in #2601
- feat(remote): forward ports of Compose services from forwardPorts by @andreabasile in #2603
- feat(vcs): complete the push target branch from the remote's branches by @Veng0923 in #1680
- fix(plugins): find a program named with its extension on Windows by @l0ng-ai in #2602
- test(e2e): give the streaming agent scroll tests the slow-test timeout by @l0ng-ai in #2607
- fix(java): rebuild when a launch's output folders were deleted outside the IDE by @l0ng-ai in #2608
- fix(http): read environment files in the encoding the editor detects by @l0ng-ai in #2609
- feat(agents): quote a mouse selection with a floating Quote button by @panda-student in #2519
- fix(java): say why a Maven module has no code intelligence when a build plugin doesn't resolve by @l0ng-ai in #2612
- fix(tools): restart a tool's language servers in every open project after installing it by @l0ng-ai in #2613
- feat(terminal): change the font size with Ctrl/Command+mouse wheel like the editor by @pdasilem in #2604
- fix(vcs): list files in the Compare tool window and open each diff in the editor by @l0ng-ai in #2611
- fix(window): zoom the window in one step instead of animating it by @l0ng-ai in #2614
- fix(settings): move plugin formatter choices into Code Style › Formatter by @l0ng-ai in #2616
- feat(vcs): show branch and incoming/outgoing commits beside repository roots by @pdasilem in #2605
- fix(search): show the results list when the preview is off by @l0ng-ai in #2625
- fix(run): run JUnit configurations with the build's JDK by @l0ng-ai in #2627
New contributors
Thanks to everyone who contributed for the first time:
- @lzskyline made their first contribution in #2322
- @HandsomeXi made their first contribution in #2395
- @EjaYF made their first contribution in #2384
- @ferivoq made their first contribution in #713
- @w4terlaw made their first contribution in #2420
- @silencezhang7 made their first contribution in #2458
- @zaojiaoci made their first contribution in #2012
- @makise2060 made their first contribution in #2560
- @rkdgusxo66 made their first contribution in #2564
- @ffgenius made their first contribution in #2568
- @tiagodiana made their first contribution in #2598
- @Veng0923 made their first contribution in #1680
Full Changelog: v0.1.40...v0.1.41