OpenIDEA 0.1.40 adds an opt-in built-in MCP server, Ruby debugging, .NET workflows, Docker dashboards in Services, attached projects and a shared Java language server across builds, makes switching editor tabs and long agent conversations faster, and ships Plugin API 1.4.
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
- Built-in MCP server (opt-in): agents can read, search and edit files through the IDE's documents (keeping unsaved changes and undo), and run or build after you allow it in the project window; ACP agents get it automatically while it is on.
- Agents: the model list and thinking level share one popover, and Claude's models, effort levels and commands are ready before the first task.
- Long conversations switch tabs quickly and keep following the newest message until you scroll away.
- Codex skills appear in command completion, and composer commands and skills are grouped.
Plugins (Preview)
- Plugin API 1.4 (
openidea:plugin@1.4.0); plugins built for earlier 1.x versions keep loading. - Workbench and editor: status items, Output channels, content tabs, decorations, tree badges, search, Problems, VCS reads and new menu locations.
- Runs and tests: plugin-owned run lifecycles, keyed terminals, run targets that also host language servers and debugging, dynamic configurations, test parsers and rerun selection.
- Language features: formatters, signature help, lenses, links, symbols and colours, and language servers inside plugin-injected ranges.
- Plugins can own database sources and add tools to the built-in MCP server; new permissions cover plain HTTP, local sockets and IDE commands.
- Indexer gutter markers carry their plugin's icon, and a plugin's Homepage is a link.
Run and debug
- Debug Ruby programs and tests with rdbg.
- Run All, Restart All, Stop All and Open in Browser on a run-configuration type group; a grouped Add Service menu and configuration picker.
- Before-launch Build Module and Build Artifacts, shared Java launch preparation with incremental build policies, and Tomcat skips the build when the WAR is up to date.
- Import JetBrains Go Application and Go Test run configurations.
- Find in every console, and clickable file and URL links in the debug console.
- Hot Swap: Reload Changed Classes can be cancelled, and reloading while a changed method is on the stack is reported as a reload with old frames still running, not as a failure.
- Gradle debugs forked JVMs on a dynamic JDWP port; Maven supports a toolchains file and active profiles, and Maven test forks get a fixed JDWP port.
- Debug adapters start more reliably (no port races, no launch deadline, shared breakpoint updates).
Languages and editor
- Java: one JDT LS can serve all builds in a project window; projects with only a JDT
.classpathlist their libraries and JDK; Find Usages and usage counts are faster in large projects. - .NET: workspace, NuGet and test workflows.
- Missing build tools, SDKs and debuggers now lead somewhere: Maven/Gradle errors open their settings, an incompatible Gradle JVM points to Choose Gradle JVM, and tool installs (Delve, gopls, npm, gem and pip tools) use the project's selected SDK.
- Highlighting: tags in doc comments, Kotlin declarations, Go semantic colours, SCSS in Vue
<style lang="scss">, HTTP request lines with JSON bodies; colour schemes' semantic token styles apply. - Switching tabs keeps recently used editors alive: inlay hints and code lenses no longer pop in after each switch.
- Configurable caret mouse gestures, and editor tooltips no longer hide behind panels.
- Vim: a Space or comma
mapleaderworks, and special-key names are accepted in any case.
Database
- Procedures and functions get their own folders in the schema tree.
- Bundled SQLite updated to 3.54.1 (RUSTSEC-2026-0459).
Docker
- Services dashboards for Docker with image layers, container processes, view filters and logs in editor tabs.
Version control
- Multi-repository Push lets you pick each repository's remote and target branch.
- Soft-wrap in the diff viewer, remembered diff window size, and ⌘↓ jumps to source on macOS.
- Clearer branch sync indicators and line-ending badges in diffs; reorder Git Log columns by dragging.
- Edit the whole commit message, delete every selected branch, and remove the worktree holding a branch you delete.
Desktop
- Attach projects to the current project window, and find projects under a chosen folder.
- Install the
openideacommand on macOS, Windows and Linux. - The IDE checks for updates while it stays open.
- View › Appearance toggles the toolbar, status bar and tool window bars; Increase/Decrease Font Size applies to editors, terminals and web views.
- Installed JetBrains Mono and Inter fonts are preferred over the bundled ones.
- Terminal: smoother scrolling and pasting, Windows ConPTY compatibility, and Shift+Enter sends Esc+Return.
- Windows: choose the installation scope; loose files open in the focused project window.
All changes (150 pull requests and commits)
- feat(app): install the openidea command on macOS, Windows and Linux by @l0ng-ai in #2009
- fix(terminal): send a Pinyin input-source switch commit once, as typed by @StarryKira in #2110
- fix(notifications): cap toast height so a long body can't push its close off-screen by @a-rookie-of-C-language in #2138
- feat(editor): make caret mouse gestures configurable by @l0ng-ai in #2143
- fix(agents): preserve sign-in failure details by @l0ng-ai in #2141
- fix(editor): take a JSX block comment back out on the second toggling by @aconeshana in #2121
- fix(terminal): deliver the whole text of a multi-character key event by @hiennq12 in #2122
- fix(vcs): delete every selected branch, not only the right-clicked one by @muutot in #2108
- fix(keymap): open shortcut menu when activating an action by @l0ng-ai in #2148
- fix(vcs): 修复 Git 对比定位与选区异常,优化跳转反馈 by @PLZY in #2093
- fix(vcs): prevent removing worktrees containing the open project by @l0ng-ai in #2150
- fix(vcs): offer to delete the worktree holding a branch being deleted by @muutot in #2119
- fix(editor): honor semantic token scheme styles by @shohruh-genius in #2098
- fix(menu): keep submenus open during diagonal pointer movement by @l0ng-ai in #2153
- fix(java): scope launch compile errors to module dependencies by @misswell in #2147
- fix(http): recognize request lines and highlight JSON bodies by @shohruh-genius in #2142
- fix(kotlin): highlight declarations and semantic roles by @shohruh-genius in #2097
- feat(vcs): clearer branch sync indicators and diff line-ending badges by @muutot in #1667
- fix(build-tools): 优化 Maven 命令分组与跳过测试的视觉反馈 by @PLZY in #2095
- fix(run): 优化 Run/Debug 启动动画反馈 by @PLZY in #2087
- fix(go): enable semantic colors and Go scheme settings by @shohruh-genius in #2017
- feat(vcs): reorder Git log columns by dragging headers by @muutot in #1856
- fix(workbench): 优化侧栏悬停、选中和提示框样式 by @PLZY in #2094
- feat(mcp): add an opt-in built-in IDE server by @l0ng-ai in #2149
- fix(windows): reveal verbatim UNC paths in Explorer by @Yvesjava in #2132
- fix(debugger): debug Python with python, not python3, on Windows by @Bortlesboat in #2159
- fix(app): surface startup failures before the workbench loads by @l0ng-ai in #2030
- fix(installer): allow choosing the Windows installation scope by @l0ng-ai in #2161
- fix(agents): group all composer commands and skills by @l0ng-ai in #2163
- fix(agents): discover Claude commands before the first task by @l0ng-ai in #2166
- feat(workspace): discover projects in selected folders by @l0ng-ai in #2167
- fix(terminal): send Esc+Return for Shift+Enter by @mansur-akhmadi in #2164
- fix(vcs): honour the modal commit interface for Commit File… and diffs by @manini-1 in #2158
- feat(run): add Build Module and Build Artifacts before launch by @misswell in #2155
- fix(debugger): share breakpoint flushes across concurrent starts by @l0ng-ai in #2171
- feat(run): Run All / Restart All / Stop All and Open in Browser on a type group by @qtvbwfn in #2090
- feat(gradle): debug forked JVMs on a dynamic JDWP port by @misswell in #2154
- feat(maven): support toolchains file and active profiles by @misswell in #2151
- test(agents): keep ide-agent tests off the user's profile and git settings by @panda-student in #2168
- fix(menu): draw macOS menu shortcuts in the native shortcut column by @lleviathe in #2086
- fix(app): show a manual update check when update balloons are off by @emanyzwww in #2169
- feat(hotswap): make Reload Changed Classes cancellable by @misswell in #2152
- feat(debugger): debug Ruby programs and tests with rdbg by @krmbzds in #2173
- feat(run): grouped Add Service menu and the configuration picker by @qtvbwfn in #2091
- fix(workbench): fill the workbench when maximizing tool windows by @l0ng-ai in #2176
- fix(run): list an Add Service category once by @l0ng-ai in #2175
- feat(settings): toggle main menu focus on a lone Alt press by @a-rookie-of-C-language in #2174
- fix(debugger): preserve Ruby output and session cleanup by @l0ng-ai in #2182
- feat(zoom): route Increase/Decrease Font Size across editors, terminal tabs, and plugin webviews by @dengliu in #2172
- fix(terminal): refit once a tool window drag settles by @brunobelloni in #2178
- fix(terminal): queue child input without blocking the UI by @l0ng-ai in #2183
- feat(run): share Java preparation and add incremental build policies by @misswell in #2156
- fix(java): reject unusable language server JDKs by @l0ng-ai in #2184
- fix(debugger): wait for slow launch and attach requests by @l0ng-ai in #2186
- feat(plugins): support secondary split on [[contributes.views]] and default headerless side views to secondary by @dengliu in #2185
- fix(build-tools): discover linked workspace projects by @l0ng-ai in #2187
- fix(agents): list native Codex skills in command completion by @l0ng-ai in #2190
- fix(editor): hide mouse-only caret action from Find Action by @l0ng-ai in #2191
- fix(http-client): index Spring endpoints from workspace members by @l0ng-ai in #2192
- feat(plugins): brand document-indexer gutter markers with marker icons by @yzPeedro in #2196
- feat(plugins): make Homepage a clickable hyperlink in Settings > Plugins by @dengliu in #2195
- test(plugins): cover indexed marker icon races and fallback by @l0ng-ai in #2198
- fix(lsp): end the earlier task when a progress token begins again by @lleviathe in #2199
- fix(editor): keep the scroll position when the editor gets focus back on macOS by @lleviathe in #2201
- feat(editor): highlight tags inside doc comments by @lleviathe in #2200
- fix(plugins): refuse indexed-only renames of code identifiers the language server can't rename by @yzPeedro in #2205
- fix(settings): use IntelliJ's codes for .icls effect types by @lleviathe in #2203
- fix(plugins): cover indexed code names and translate rename refusals by @l0ng-ai in #2209
- feat(workbench): toggle the toolbar, status bar and tool window bars from View › Appearance by @lleviathe in #2206
- ci(plugins): skip the scheduled plugin index refresh on forks by @ldg030201 in #2211
- feat(agents): load Claude's models and effort before the first task by @panda-student in #2212
- feat(agents): show the model list and effort in one popover by @panda-student in #2213
- feat(plugins): plugin API 1.4 by @l0ng-ai in #2207
- fix(terminal): configure ConPTY compatibility on Windows by @l0ng-ai in #2180
- fix(process): don't spawn taskkill when the child started nothing by @chaoes in #2056
- fix(terminal): resume pasted input as soon as the PTY accepts more by @l0ng-ai in #2220
- fix(plugins): report Problems to plugins in remote projects by @l0ng-ai in #2223
- fix(vue): highlight SCSS in
<style lang="scss">blocks by @a-rookie-of-C-language in #2221 - fix(agents): stop defaulting new tasks to bypass by @l0ng-ai in #2232
- Revert "fix(agents): stop defaulting new tasks to bypass" by @l0ng-ai in #2234
- feat(plugins): let test frameworks select tests to rerun by @l0ng-ai in #2228
- fix(vcs): edit the full commit message, not only the subject by @a-rookie-of-C-language in #2242
- feat(debugger): support clickable file and URL links in debug console by @elfadl in #2245
- perf(agents): make switching to a long conversation tab cheap by @l0ng-ai in #2252
- fix(java): run jdtls on a new-enough JDK behind Scoop shims and project JAVA_HOME by @a-rookie-of-C-language in #2230
- fix(run): scroll the configuration list and form independently by @a-rookie-of-C-language in #2255
- perf: add a scenario for switching between and scrolling long agent conversations by @l0ng-ai in #2259
- fix(delve): retry removing __debug_bin leftovers on Windows by @a-rookie-of-C-language in #2257
- feat(lsp): language servers inside plugin-injected ranges by @l0ng-ai in #2235
- perf(search): switch editors in the frame the Switcher closes by @l0ng-ai in #2267
- fix(dap): avoid free-port race when starting debug adapters by @ppxb in #2262
- fix(plugins): give test selection the command budget by @l0ng-ai in #2258
- feat(lsp): run language servers in a plugin run target by @l0ng-ai in #2250
- fix(agents): keep following a conversation's end unless the user scrolls away by @l0ng-ai in #2269
- fix(run): pin the JDWP port for Maven test forks (#2215) by @a-rookie-of-C-language in #2268
- feat(debug): debug programs in a plugin run target by @l0ng-ai in #2264
- fix(sdk): list conda environments from the conda on PATH (#2240) by @a-rookie-of-C-language in #2273
- perf(editor): keep recently used editor views across tab switches by @l0ng-ai in #2282
- fix(agents): leave a conversation's end for scrolls no layout caused by @l0ng-ai in #2283
- perf(terminal): skip DOM work for rows whose markup did not change by @brunobelloni in #2239
- feat(run): a Find entry on every console, not just the Run toolbar by @misswell in #1764
- perf(java): count usage lenses in the project sources only by @l0ng-ai in #2244
- feat(tomcat): skip the before-launch build when the WAR is up to date by @ppxb in #2276
- perf(java): reuse usage search results and skip covered folders when widening by @l0ng-ai in #2278
- fix(editor): keep the corner overlay from covering the end of long lines by @Moler1995 in #2289
- fix(lightedit): merge the saved session with launched tabs instead of replacing them (#2229) by @a-rookie-of-C-language in #2290
- fix(vim): accept special-key names in any case in rc mappings by @ppxb in #2291
- feat(docker): add Services dashboards, layers, processes, view filters and log editor tabs by @dengliu in #2246
- fix(installer): preserve legacy Windows installation scope by @l0ng-ai in #2225
- fix(markdown): preserve mermaid style scope and marker suffix selectors on id rewrite by @dengliu in #2288
- fix(run): read JetBrains working directories written as file: URLs by @Clarence404 in #2287
- feat(unity): open scripts from external editor arguments by @hacbit in #2296
- fix(java): pass m2e an effective settings file carrying the configured local repository by @a-rookie-of-C-language in #2301
- fix(windows): route loose external files to active project window by @dengliu in #923
- feat(vcs): soft-wrap long lines in the diff viewer by @atlas-u in #2286
- fix(gradle): read dependencies from scripts a build applies by @zmh69695328 in #2277
- feat(dotnet): add workspace, NuGet and test workflows by @l0ng-ai in #2303
- fix(editor): restore an evicted tab's exact scroll offset by @l0ng-ai in #2324
- fix(java): list JDT .classpath libraries and the JDK for manifest-less projects (#2300) by @a-rookie-of-C-language in #2304
- fix(agents): notify subscribers when a session report changes the cached provider config by @a-rookie-of-C-language in #2308
- fix(editor): keep the saved layout when a session restore meets open tabs by @l0ng-ai in #2325
- feat(run): import JetBrains Go Application and Go Test configurations by @ppxb in #2309
- fix(welcome): name the platform's file manager, not Finder by @emanyzwww in #2265
- feat(java): share JDT LS across builds in a project window by @gudcks in #2272
- fix(database): enable Go to Column / Submit / Revert right after a table opens (#2307) by @a-rookie-of-C-language in #2318
- fix(run): drop the leftover vue kind from the category table by @qtvbwfn in #2302
- feat(db): list procedures and functions in separate schema folders by @boenkkk in #2270
- fix(debugger): report obsolete methods as a completed hot swap by @l0ng-ai in #2330
- fix(editor): parent CodeMirror tooltips to the body so panels can't cover them by @a-rookie-of-C-language in #2327
- fix(tools): install with the selected project SDK by @l0ng-ai in #2334
- fix(build): link missing tool and JDK errors to recovery by @l0ng-ai in #2335
- feat(app): check for updates while the IDE stays open by @l0ng-ai in #2329
- fix(project): keep attachments in the current project by @l0ng-ai in #2320
- fix(fonts): prefer installed JetBrains Mono/Inter over bundled variable webfonts by @a-rookie-of-C-language in #2311
- fix(lsp): wait through planned server restarts by @l0ng-ai in #2348
- fix(debug): wait for Windows debuggee trees to exit by @l0ng-ai in #2349
- fix(lsp): respect Dart's own filesystem watcher by @l0ng-ai in #2350
- fix(agents): attach pasted clipboard images on Linux by @NealimeKenna in #2336
- feat(keymap): bind ⌘↓ to Jump to Source in the diff viewer on macOS by @ntbang0901 in #2341
- feat(vcs): pick each repository's remote and target branch in the multi-repository Push dialog by @ntbang0901 in #2342
- fix(vcs): remember the diff window's size between openings by @a-rookie-of-C-language in #2353
- fix(editor): keep the page from scrolling with the editor by @l0ng-ai in #2356
- fix(vim): let mapleader shadow built-in keys like and , (#2337) by @a-rookie-of-C-language in #2355
- fix(deps): bundle patched SQLite for RUSTSEC-2026-0459 by @shohruh-genius in #2351
- fix(vim): only shadow leader keys, not operators a mapping starts with by @l0ng-ai in #2360
- fix(vim): keep shadowed leader built-ins across rc reloads by @l0ng-ai in #2361
- fix(usages): keep the scope summary row from taking half of the Find Usages panel by @l0ng-ai in 8d5504b
- docs(readme): update the WeChat group QR code by @l0ng-ai in ecba8af
- Update README.md by @l0ng-ai in 88a1e41
- test(e2e): reach the end of the diff with Meta+End by @l0ng-ai in 53f837b
New contributors
Thanks to everyone who contributed for the first time:
- @aconeshana made their first contribution in #2121
- @hiennq12 made their first contribution in #2122
- @PLZY made their first contribution in #2093
- @Yvesjava made their first contribution in #2132
- @Bortlesboat made their first contribution in #2159
- @mansur-akhmadi made their first contribution in #2164
- @manini-1 made their first contribution in #2158
- @emanyzwww made their first contribution in #2169
- @krmbzds made their first contribution in #2173
- @brunobelloni made their first contribution in #2178
- @Moler1995 made their first contribution in #2289
- @Clarence404 made their first contribution in #2287
- @atlas-u made their first contribution in #2286
- @zmh69695328 made their first contribution in #2277
Full Changelog: v0.1.39...v0.1.40