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

one hour ago

OpenIDEA 0.1.45 debugs JavaScript in the browser (dev server pages, DOM event and request breakpoints, a Network tab), lists incoming and outgoing commits, stashes selected files, annotates earlier revisions, adds linked HTML tag editing, Zig, Slint and Helm support, CLI sessions as editor tabs, updates for installed language servers and debuggers, and ships Plugin API 1.8.

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

Debugger

  • Debug JavaScript in the browser: debugging a script that starts Vite, Next.js or another dev server also opens its page in Chrome or Edge with the debugger attached (opt-in), and any URL can be debugged from a console.
  • Page debugging: DOM event and request breakpoints, a Network tab, and watches evaluated while the program runs (opt-in).
  • The Debug window opens on Console and remembers the view last picked; attach to .NET processes, with a process list on Windows; Java Evaluate imports the classes the frame's file doesn't; Kotlin debugging with kotlin-lsp; watches kept per project.

Version control

  • Incoming and outgoing commits from the branch widget; choose the repository in the Pull dialog; stash only the selected files.
  • Annotate a file as of an earlier revision, skipping the commits in blame.ignoreRevsFile; open blame from Code Vision's author hint.
  • Create a Git repository for a project that has none; repositories moved into an open project are picked up; the working tree status refreshes incrementally; favorite branches first in the Git Log branch filter; a Git page in the color scheme settings.

Editor and languages

  • Linked editing of matching HTML tags; the caret's indent guide is highlighted and double-clicking a brace selects its block; /* */ comments continue with *.
  • Go: the interfaces a type or method implements in the gutter. TypeScript 7 runs its own language server; a tsserver memory limit setting (Vue projects get a larger heap by default); a JavaScript Runtime settings page.
  • New languages and runners: Zig (run, test and debug from build.zig), Slint, Helm templates, rebar3 and Mix projects; per-test output for Maven and Gradle Java tests.
  • New file templates: Jupyter Notebook, C# Class with the project's namespace; built-in template names are translated.

Databases, terminal and agents

  • Database results reuse a console's tabs on each run and can be pinned; Expand All, Select Opened File and a search field in the tool window; test a data source's SSH tunnel on its own; exact numbers in sorting, aggregates, charts and exports.
  • CLI sessions as editor tabs, and terminal tabs can move to the editor area.
  • Agents: search the task list, generated titles for Claude Code and Codex tasks, reference chips and quote blocks in the composer, import sessions from other apps.

Workbench, tools and remote

  • File › New is a submenu (Project, Workspace, File, Scratch File); a background image for the project window; Language Servers settings grouped by language, with updates offered for the servers and debuggers the IDE installed; settings search prefers the page a query names.
  • MCP server: a listen address (127.0.0.1 by default), a fixed port and a kept token; deployment server groups and FTP passwords in the connection settings.
  • Faster startup from an index snapshot and compact query tables; requires macOS 13 or later.

Plugin API 1.8

  • Dynamic file and folder icons by path; a host-owned diagnostics snapshot and line-end annotation order; installed and marketplace plugins listed together in foldable groups.
All changes (186 pull requests, 5 direct commits)
  • fix(templates): write the file template body before opening the file by @Renjiankang in #3083
  • feat(templates): built-in Jupyter Notebook file template by @Renjiankang in #3084
  • fix(database): preserve precision when sorting numeric cells by @LunarFeller in #3075
  • fix(database): preserve numeric precision in JSON exports by @LunarFeller in #3102
  • perf(vcs): reuse displayed graph for parent navigation by @amphetamlne in #3049
  • fix(database): keep unsubmitted result edits while another result tab is shown by @l0ng-ai in #3114
  • feat(database): add default result tab navigation shortcuts by @Mr0Bread in #3100
  • fix(gradle): run the unpacked wrapper distribution when gradle-wrapper.jar is missing by @l0ng-ai in #3116
  • fix(vcs): leave a new branch from a remote branch with another name untracked by @l0ng-ai in #3063
  • feat(mcp): fixed port and kept token, focus only for confirmations, no refactoring notice for agent edits by @guoyucode in #3062
  • fix(lsp): escape unescaped Unicode and spaces in file URIs from any server by @l0ng-ai in #3117
  • fix(java): use and cache the Maven runner launch classpath by @kradme in #2929
  • fix(terminal): keep Nerd Font icons wider than their cell above the next cell's background by @l0ng-ai in #3121
  • fix(database): close the active result tab, not the Services window, on Close Tab by @Mr0Bread in #3118
  • fix(database): use the Database tab's table icon for result tabs and the Table view by @Mr0Bread in #3115
  • feat(database): reuse a console's result tabs on each run, pin tabs to keep them by @Mr0Bread in #3113
  • feat(color-scheme): Git page for inline blame and project view branch colors by @muutot in #3090
  • fix(lsp): check again for a missing language server from the status popup by @l0ng-ai in #3126
  • feat(editor): start a new line in a /* */ comment with a leading asterisk by @l0ng-ai in #3127
  • fix(refactor): introduce a variable directly when the expression occurs once by @l0ng-ai in #3128
  • perf(java): find implementations in the sources through the index by @l0ng-ai in #3132
  • fix(macos): keep full screen when Escape goes unhandled by @l0ng-ai in #3134
  • fix(vcs): lay out a merge commit's file side by side, each pane scrolling by @l0ng-ai in #3138
  • fix(editor): leave reference counts to Code Vision's usages by @l0ng-ai in #3139
  • fix(project-view): offer Git and Find Usages in workspace members outside the workspace folder by @l0ng-ai in #3142
  • fix(python): refresh the interpreter page after recreating an environment, pick a conda env's Python version by @l0ng-ai in #3143
  • fix(debugger): keep the frames | variables split, put the views after the toolbar, badge live sessions by @l0ng-ai in #3144
  • fix(vcs): keep Jump to Source current in focused diffs by @shohruh-genius in #3137
  • feat(database): Expand All in the Database tool window header by @Mr0Bread in #3140
  • fix(ui): accent the selected tab only in the part that has focus by @Mr0Bread in #3124
  • fix(database): Tab goes from a result tab to the grid's first cell by @Mr0Bread in #3130
  • test(i18n): allow "Python {short}" to read the same in every locale by @l0ng-ai in #3147
  • feat(deployment): server groups for uploading to several servers at once by @l0ng-ai in #3149
  • fix(debugger): show JVM values as {Type@id} summary and map entries as key -> value by @l0ng-ai in #3150
  • fix(ui): keep a right-click in an open menu from opening the toolbar menu by @l0ng-ai in #3152
  • fix(java): show a re-installed SNAPSHOT's classes after reloading the project by @l0ng-ai in #3157
  • fix(project-tree): list a re-installed SNAPSHOT's entries after reloading the project by @l0ng-ai in #3158
  • feat(color scheme): edit text style for errors and warnings by @muutot in #3154
  • fix(vcs): run the merge editor's buttons on a mouse click on macOS by @l0ng-ai in #3160
  • feat(editor): open the blame annotations from Code Vision's author hint by @l0ng-ai in #3161
  • fix(agents): stop Claude Code processes when their connection closes by @l0ng-ai in #3163
  • feat(vcs): create a Git repository for a project that has none by @l0ng-ai in #3166
  • docs: Chinese README, sponsor section only in the Chinese one by @l0ng-ai in #3168
  • feat(debugger): attach to .NET processes and list processes on Windows by @l0ng-ai in #3169
  • fix(toolwindows): don't reopen Run, Debug and Find with the project by @l0ng-ai in #3170
  • fix(status bar): close Background Tasks when its last task ends by @l0ng-ai in #3171
  • fix(debugger): offer the Kotlin debugger before starting a Maven or Gradle debug run by @l0ng-ai in #3172
  • feat(editor): show the interfaces a Go type or method implements in the gutter by @l0ng-ai in #3173
  • feat(agents): search the task list by @l0ng-ai in #3174
  • feat(editor): support linked editing for matching HTML tags by @Inf1mum in #2993
  • fix(agents): keep the user's MCP server values in the credential store by @rohitdanda in #3002
  • fix(vcs): keep the inline blame at the line start, off the caret path, and its tooltip to itself by @muutot in #3167
  • fix(git-toolbox): show the focused file's branch in workspace windows by @Inf1mum in #3159
  • feat(deployment): enter an FTP server's password in its connection settings by @l0ng-ai in #3179
  • fix(settings): write settings off the main thread by @muutot in #3153
  • feat(terminal): CLI sessions as editor-area tabs (#2202) by @Inf1mum in #3177
  • fix(java): import a Gradle build on a JDK its Gradle runs on when no version is declared by @l0ng-ai in #3181
  • ci(release): keep the Rust build cache when a release build fails by @l0ng-ai in #3125
  • feat(agents): generated titles for Claude Code and Codex tasks by @l0ng-ai in #3133
  • test(i18n): allow CLI to stay untranslated by @l0ng-ai in #3186
  • feat(agents): reference chips, quote blocks and a richer completion in the composer by @l0ng-ai in #3091
  • feat(terminal): move a terminal tab to the editor area by @l0ng-ai in #3187
  • feat(languages): Slint with the slint-lsp language server by @l0ng-ai in #3191
  • feat(appearance): background image for the project window by @l0ng-ai in #3194
  • fix(vcs): close Git Log toolbar dropdowns on a second click by @formiat in #3193
  • fix(vcs): keep Git Branches' expanded groups and folders across restarts by @formiat in #3182
  • fix(remote): never reuse an older openidea-server after an update by @l0ng-ai in #3202
  • fix(themes): give the bundled theme the new typo and deprecated tokens by @muutot in #3199
  • fix(gutter): fix plugin gutter flicker by @pxc1984 in #3196
  • feat(plugins): a host-owned diagnostics snapshot and line-end annotation order by @muutot in #3103
  • feat(vcs): show favorite branches first in the Git Log branch filter, as in IDEA by @formiat in #3201
  • feat(diff): Ctrl/Cmd-click navigation and quick docs in the working-copy pane by @l0ng-ai in #3203
  • fix(lsp): offer an update when a language server build has expired by @l0ng-ai in #3210
  • fix(vcs): Git Log 等列表中较早的提交也显示时间 by @PLZY in #3206
  • feat(debugger): Evaluate 中使用未导入的类时自动导入,与 IDEA 一致 by @PLZY in #3204
  • perf(index): use compact query tables for faster file and symbol search by @akbar1214 in #3209
  • fix(dev): apply the worktree's Vite URL when dev:app is given a project path by @l0ng-ai in #3212
  • feat(templates): New ▸ C# Class with the project's namespace by @l0ng-ai in #3216
  • fix(vcs): Commit 面板的 Diff 在最后一个变更后继续跳到未版本控制的文件 by @PLZY in #3211
  • fix(vcs): confirm force pushes in the multi-repository Push dialog by @mansur-akhmadi in #3215
  • fix(vim): draw the Normal-mode block cursor solid, with the character in the background colour by @l0ng-ai in #3218
  • feat(editor): 缩进参考线跟随光标与匹配括号高亮,双击大括号选中整个代码块 by @PLZY in #3213
  • fix(editor): 光标处用法高亮即时跟随光标,跨行高亮整块显示 by @PLZY in #3220
  • fix(plugins): harden the official plugins against crafted input by @rohitdanda in #3219
  • test(plugins): focus an absolute path in the git-toolbox schedule test by @l0ng-ai in #3224
  • perf(startup): batch action registration by @akbar1214 in #3222
  • fix(editor): keep the usage highlight class names out of the text catalog check by @l0ng-ai in #3225
  • feat(database): Select Opened File in the Database tool window header by @Mr0Bread in #3223
  • fix(tools): honour Cancel until a downloaded tool replaces the installed one by @l0ng-ai in #3228
  • perf(search): prune explicitly excluded subtrees by @amphetamlne in #3221
  • fix(ui): ⌘⌫ erases a tree's speed search query by @Mr0Bread in #3226
  • fix(editor): keep editor actions off a tool window's speed search by @Mr0Bread in #3227
  • fix(ui): give .slint files their own icon by @l0ng-ai in #3230
  • fix(lsp): accept file URIs a language server leaves unencoded by @l0ng-ai in #3234
  • fix(navigation): show usages on a declaration a plugin's index links elsewhere by @l0ng-ai in #3238
  • feat(run): detect rebar3 and Mix projects and run escripts by @l0ng-ai in #3239
  • fix(editor): recount the usages code lenses when the project's documents change by @Inf1mum in #3235
  • fix(vcs): rename a branch in remote windows by @Mr0Bread in #3232
  • fix(plugins): refuse linked background document edits by @SorPuti in #3236
  • fix(database): tint the whole tree row of a coloured data source by @janoskranczler in #3240
  • fix(database): ignore stale metadata after deactivation by @LunarFeller in #3237
  • fix(database): keep expanded nodes loaded after editing a data source by @l0ng-ai in #3243
  • test(rpc): check handler argument names against the client bindings by @l0ng-ai in #3244
  • feat(tools): offer updates for the language servers and debuggers the IDE installed by @l0ng-ai in #3247
  • fix(lsp): run a server chosen from a Node.js installation on that Node by @l0ng-ai in #3251
  • feat(typescript): run TypeScript 7's own language server when it is the selected TypeScript by @l0ng-ai in #3252
  • fix(agents): preserve prompt text during native image paste by @LunarFeller in #3250
  • feat(run): show what each Java test printed, for Maven and Gradle by @l0ng-ai in #3256
  • feat(agents): import sessions from other apps from the Agents tool window by @janoskranczler in #3255
  • feat(plugins): add dynamic exact-path file and folder icon decorations in API 1.8 by @dengliu in #3257
  • fix(vcs): keep F7 working in the diff it opens for the next file by @l0ng-ai in #3263
  • fix(plugins): rebuild the diagnostics test fixture after formatting its source by @l0ng-ai in #3264
  • test(plugins): exercise remote diagnostics through the host snapshot by @amphetamlne in #3254
  • fix(editor): end a <<- heredoc at its tab-indented delimiter in shell highlighting by @DanielADK in #3259
  • fix(macos): require macOS 13, the first release whose system engine runs the app by @l0ng-ai in #3271
  • fix(database,http-client,graphql): keep exact numeric text in aggregates, charts and JSON paths by @Inf1mum in #3175
  • feat(vcs): make before-commit checks a registry by @muutot in #3268
  • feat(mcp): a listen address, so the IDE MCP server can be reached from other computers (127.0.0.1 by default) by @guoyucode in #3146
  • ci: run the Kotlin smoke against kotlin-lsp 271.2085.0 by @l0ng-ai in #3270
  • feat(vcs): annotate the file as of an earlier revision by @muutot in #3265
  • feat(vcs): refresh the working tree status incrementally by @muutot in #3267
  • feat(language): add Helm Template framework language and editor mode by @dengliu in #3261
  • fix(vcs): refresh the diff navigator's handlers before paint by @l0ng-ai in #3275
  • fix(debugger): debug Kotlin with kotlin-lsp without asking for kotlin-debug-adapter by @l0ng-ai in #3274
  • feat(run): run, test and debug Zig projects from build.zig by @l0ng-ai in #3278
  • feat(database): test a data source's SSH tunnel on its own by @l0ng-ai in #3279
  • fix(vcs): read the scoped status through git again, with the pathspec spelled right by @muutot in #3280
  • fix(completion): clear feature backoff on plugin updates and explicit completion by @dengliu in #3277
  • fix(vcs): make the line-separator check read bytes, and drop the unused check input by @muutot in #3281
  • ci: run the Maven launch classpath smoke for the runner JDK by @l0ng-ai in #3273
  • fix(window): lay out project window tabs evenly with centred titles by @l0ng-ai in #3285
  • feat(vcs): register a repository moved into an open project by @muutot in #3269
  • fix(editor): keep the completion hint below the suggestion list by @zhzhsx in #3283
  • fix(mybatis): find a mapper's XML by its file name before searching, and keep a found one by @Clarence404 in #3282
  • fix(build): open Maven compile errors on Windows by @l0ng-ai in #3288
  • perf(index): ~10x faster warm startup for large projects by @akbar1214 in #3286
  • feat(tools): organize Language Servers settings by language by @l0ng-ai in #3272
  • feat(javascript): choose the preferred runtime on a JavaScript Runtime settings page by @l0ng-ai in #3291
  • fix(terminal): hide the tool window or refocus when a session ends by @zhzhsx in #3290
  • fix(editor): let Tab step out of the parentheses a completion inserted by @zhzhsx in #3292
  • fix(debugger): keep watches per project by @ntbang0901 in #3293
  • fix(run): translate the message for a preferred JavaScript runtime that is not installed by @l0ng-ai in #3298
  • feat(debugger): debug JavaScript that runs in the browser by @ntbang0901 in #3294
  • fix(editor): align completion labels with the word being completed by @zhzhsx in #3297
  • feat(plugins): list installed and marketplace plugins together, in foldable groups by @l0ng-ai in #3300
  • docs(vcs): creating a repository in an open project is supported by @muutot in #3308
  • fix(editor): prevent layout shifts during LSP refresh by @akbar1214 in #3307
  • fix(database): keep terminating averages exact by @LunarFeller in #3303
  • feat(debugger): open the page of a debugged dev server, and debug a URL from a console by @ntbang0901 in #3302
  • feat(debugger): break on DOM events and requests in a debugged page by @ntbang0901 in #3306
  • fix(http-client): preserve numeric environment values in requests by @LunarFeller in #3176
  • fix(debugger): open the Debug window on Console, and on the view last picked by @l0ng-ai in #3316
  • fix(libraries): keep External Libraries while a refresh is under way by @l0ng-ai in #3317
  • fix(remote): finish a remote command whose channel stays open after it exits by @l0ng-ai in #3319
  • fix(database): say that Oracle servers older than 12c are not supported by @l0ng-ai in #3322
  • fix(agents): preserve drafts edited while sending by @LunarFeller in #3321
  • fix(remote): trust SSH host keys and passwords on the host that connects by @l0ng-ai in #3323
  • test(libraries): index the refreshed node's children safely by @l0ng-ai in #3324
  • feat(vcs): choose the repository in the Pull dialog when the project has several by @mansur-akhmadi in #3312
  • feat(vcs): stash only the selected files by @muutot in #3314
  • feat(vcs): let annotate skip the commits in blame.ignoreRevsFile by @muutot in #3310
  • feat(debugger): evaluate watches while a JavaScript program runs by @ntbang0901 in #3318
  • feat(debugger): Network tab for a debugged page by @ntbang0901 in #3315
  • fix(vue): keep tsserver from crash-looping at its heap limit by @qtvbwfn in #3325
  • feat(vcs): list the incoming and outgoing commits by @muutot in #3309
  • test(i18n): allow the tsserver memory sizes to read the same in every locale by @l0ng-ai in #3326
  • feat(menu): group the File menu's creation items under a New submenu by @l0ng-ai in #3327
  • fix(menu): give every menu item a catalog label by @l0ng-ai in #3328
  • fix(lsp): encode only the URI fields of a server's messages by @l0ng-ai in #3335
  • fix(editor): ask before ending a busy tab's session ahead of discarding changes by @l0ng-ai in #3336
  • fix(database): keep a result's submission from repeating after switching tabs by @l0ng-ai in #3337
  • fix(debugger): send a reused browser page to each launch's address, keep multi-line watches whole by @l0ng-ai in #3339
  • fix(index): check the ignore files above the project before a warm start by @l0ng-ai in #3340
  • fix(mcp): wait only for the stopped server's own port on a restart by @l0ng-ai in #3341
  • fix(settings): select the page a search names over pages that mention it by @l0ng-ai in #3345
  • fix(vcs): stash the whole working tree again by @l0ng-ai in #3348
  • fix: close gaps in the LSP URI, index snapshot and MCP restart fixes by @l0ng-ai in #3349
  • fix: close gaps in the result submit, busy close and browser navigation fixes by @l0ng-ai in #3352
  • test(database): keep the SSH tunnel test's command off Tauri's invoke by @l0ng-ai in #3357
  • fix(ui): translate template names, keep stash messages readable, retitle tool windows on a language switch by @l0ng-ai in #3361
  • @Renjiankang made their first contribution in #3083
  • @LunarFeller made their first contribution in #3075
  • @amphetamlne made their first contribution in #3049
  • @akbar1214 made their first contribution in #3209
  • @janoskranczler made their first contribution in #3240
  • @zhzhsx made their first contribution in #3283
  • fix(agents): keep the session status line readable in a narrow panel by @l0ng-ai in b83df2dbd
  • fix(boot): allow 60 seconds for startup before showing the failure page by @l0ng-ai in 9f7a35f17
  • feat(database): search the tree from a field over the toolbar by @l0ng-ai in a2809bda8
  • fix(agents): keep the new-task composer still when switching agents by @l0ng-ai in ac7a81db1
  • style(agents): borderless task search that sits in the list like a tree row by @l0ng-ai in 291d1324c

New contributors

Thanks to everyone who contributed for the first time:

Full Changelog: v0.1.44...v0.1.45

Don't miss a new openidea release

NewReleases is sending notifications on new releases.