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

3 hours ago

OpenIDEA 0.1.38 adds Docker and Compose run targets, Oracle data sources, Astro support, PHP Remote Debug with PHPStan and PHP-CS-Fixer, Ruby test runs with coverage, a choice of update source with a China mirror, and ships Plugin API 1.2.

Download

Architecture Windows macOS Linux
x86-64 (64-bit) EXE   MSI Intel AppImage   DEB   RPM
AArch64 (ARM64) EXE   MSI 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

Plugins (Preview)

  • Plugin API 1.2 (openidea:plugin@1.2.0): commands can ask the user with a picker, an input box or a confirmation, read every file selected in the Project view, and set context keys for their when clauses.
  • when clauses can test whether the project contains a file; plugin tree and list views get a right-click menu on their items; plugins can set their own icon.
  • A background document-indexer API, and project files are listed from the index instead of walking the disk.
  • Plugins built for API 1.0 and 1.1 keep loading.

Run and debug

  • Docker and Compose run targets.
  • PHP Remote Debug (Xdebug) run configuration; OpenIDEA offers to install php-debug and Bash Debug when they are missing.
  • Search the debug console output; console actions sit in a toolbar on its left, and the program's input can be typed there.
  • Reload Changed Classes from the editor context menu, and the taskbar flashes when a breakpoint hits while the window is unfocused.
  • Ruby: a test tree with jump to source and gutter actions, run tests from the editor and Project view, and Run with Coverage (SimpleCov).
  • Runs and terminals stop when the app exits; rerun uses the configuration as edited.
  • Gradle module tests run from the build root; Delve's leftover __debug_bin files are cleaned up.

Languages and editor

  • Astro language support.
  • PHP: PHPStan errors on save, PHP-CS-Fixer reformatting, New › PHP File / PHP Class with the namespace from composer.json, source and test roots from its autoload, and an offer to run composer install when vendor/ is missing or stale.
  • Python: semantic highlighting, and Ruff formatting with config directories.
  • Log files are highlighted by level, timestamp and stack frame.
  • Enter after /** inserts a documentation comment stub; paste puts one line per caret when the counts match.
  • Force click navigates instead of opening macOS Look Up.
  • Java: usages are searched in Project Files first, with Project and Libraries on demand; implementations in project sources come first; Lombok builders work on compact record constructors.

Database

  • Oracle data sources.
  • One-Row extractor, and ⌘C copies in the chosen extractor's format.
  • Submit and revert table edits from the keyboard, and go to a column with File Structure's shortcut.

Version control

  • The Git log shows lines added and deleted; diff and merge changes are marked on the scrollbar.
  • Preview Diff toggle in the Commit tool window; delete changed files from the Changes view.
  • The Push dialog's commits and changed files resize with a splitter; spaces typed in a branch name become a separator.
  • Local changes and staging stay intact across Git operations, and partial multi-repository operations roll back.

Desktop

  • Choose the update source, including a CNB mirror for users in China.
  • Each project's terminal tabs are restored.
  • Add trusted folders from Settings.
  • Middle-click closes tabs and panel headers.
  • Windows: open recent projects from the taskbar jump list, and every project window reopens on startup.
  • macOS: OpenIDEA asks before quitting from the Dock or at logout, and traffic lights stay still during live resize.
  • Linux: starts on Wayland with the NVIDIA driver.
  • Korean translations are complete.
All changes (151 pull requests and commits)
  • fix(notebook): send the notebook path to the UI with forward slashes by @kevinh458 in #1466
  • feat(windows): open recent projects from the Windows taskbar jump list by @ppxb in #1499
  • fix(lsp): wait for a loading server before reporting no definition by @l0ng-ai in #1444
  • fix(run): swap ruby/bundle launcher when toggling Bundler by @kjeldahl in #1533
  • fix(editor): navigate on force click instead of opening macOS Look Up by @lleviathe in #1515
  • fix(editor): copy references to resolved methods by @zzxzz12345 in #1531
  • fix(ui): stop bolding tool window titles, toolbar widgets and commit groups (IntelliJ shows them in regular weight) by @dervarex in #1551
  • perf(vcs): keep multi-root Git Log refresh bounded by @shohruh-genius in #1554
  • feat(debugger): search the debug console output by @DomKing in #1502
  • feat(terminal): restore each project's terminal tabs by @tomgor in #1526
  • fix(vcs): keep changes left out of a commit excluded by @xtr-hub in #1556
  • feat(coverage): Run with Coverage and report import for Ruby (SimpleCov) by @kjeldahl in #1535
  • feat(run): run Ruby tests from the editor and Project view (-I roots, test-root folders) by @kjeldahl in #1545
  • feat(run): Ruby test tree, jump to source and gutter actions by @kjeldahl in #1546
  • feat(run): load a Minitest reporter into Ruby test runs by @kjeldahl in #1547
  • feat(vcs): stage Unity metadata with new assets by @hacbit in #1509
  • feat(vcs): mark diff and merge changes on the scrollbar, as IntelliJ's error stripe by @jaw52 in #1519
  • feat(php): show PHPStan errors in the editor on save by @DanielADK in #1518
  • feat(editor): add PyCharm-style Python semantic highlighting by @muutot in #1523
  • fix(editor): log why an edit was rejected before the editor drops it by @l0ng-ai in #1569
  • fix(windows): reopen every project window on startup by @l0ng-ai in #1574
  • fix(vcs): translate the question in the add/remove to Git confirmation by @l0ng-ai in #1575
  • fix(ruby): Ruby LSP no longer crash-loops on dead shims or a spaced gem home by @kjeldahl in #1534
  • fix(tomcat): keep the web app's META-INF/context.xml in the generated descriptor by @l0ng-ai in #1576
  • fix(editor): colour PHP variables and function calls by @l0ng-ai in #1581
  • fix(markdown): keep the blocks between an HTML container's tags inside it by @jaw52 in #1566
  • feat(vcs): replace spaces typed in a branch name with a separator, as IntelliJ by @jaw52 in #1571
  • fix(run): rerun with the configuration as edited, and drop deleted ones from Services by @l0ng-ai in #1579
  • fix(editor): keep selections whole over line backgrounds and indent guides by @l0ng-ai in #1568
  • feat(editor): highlight log files by level, timestamp and stack frame by @jaw52 in #1577
  • fix(editor): align Python identifier colors and unused-parameter styling by @muutot in #1572
  • feat(vcs): let the Git log show lines added and deleted by @liqiujiong in #1564
  • feat(python): support Ruff formatting and config directories by @muutot in #1573
  • fix(run): run PHP files with the interpreter chosen in Settings by @l0ng-ai in #1584
  • fix(sdk): detect versioned PHP binaries such as php8.1 on PATH by @l0ng-ai in #1586
  • feat(php): list PHP versions newest first by @l0ng-ai in #1587
  • fix(terminal): disable pwsh update banners by default on Windows by @l0ng-ai in #1588
  • feat(database): submit and revert table edits from the keyboard by @l0ng-ai in #1589
  • fix(themes): include PHP tokens in Harbor Night and the reference by @shohruh-genius in #1585
  • fix(project-tree): sort workspace projects by folder name by @shohruh-genius in #1583
  • fix: detect external file edits that preserve mtime and length by @qtvbwfn in #1582
  • fix(plugins): explain how to approve a process program installed after its grant by @l0ng-ai in #1590
  • feat(vcs): resize the Push dialog's commits and changed files with a splitter by @l0ng-ai in #1591
  • feat(database): go to a column of the table editor with File Structure's shortcut by @l0ng-ai in #1592
  • fix(editor): open the launched file when the window restores its last tabs by @l0ng-ai in #1594
  • feat(debugger): console actions in a toolbar on the left of the debug Console by @l0ng-ai in #1595
  • feat(vcs): delete changed files from the Changes view by @l0ng-ai in #1596
  • fix(lsp): keep rust-analyzer's developer notices out of notifications by @l0ng-ai in #1597
  • fix(keymap): bind table editor Submit and Revert in the VS Code presets by @l0ng-ai in #1598
  • feat(editor): insert a documentation comment stub on Enter after /** by @l0ng-ai in #1600
  • feat(php): mark source and test roots from composer.json autoload by @l0ng-ai in #1602
  • fix(plugins): list project files from the index instead of walking the disk by @l0ng-ai in #1604
  • feat(php): New › PHP File and PHP Class with the namespace from composer.json by @l0ng-ai in #1605
  • feat(php): reformat PHP files with the project's PHP-CS-Fixer configuration by @l0ng-ai in #1606
  • fix(app): close a project window without blocking the UI thread by @l0ng-ai in #1610
  • fix(window): cover the whole screen with a full-screen project window group on notched Macs by @KJ-AIML in #1608
  • feat(php): offer composer install when vendor/ is missing or differs from composer.lock by @l0ng-ai in #1611
  • feat(ui): close tabs and panel headers with middle mouse button by @Inf1mum in #1613
  • fix(debugger): type input for the program in the debug console by @l0ng-ai in #1614
  • perf(java): find implementations in the project sources first by @l0ng-ai in #1616
  • fix(agents): wrap a permission request line in a narrow conversation by @l0ng-ai in #1617
  • feat(vcs): add Preview Diff toggle to the Commit tool window by @Inf1mum in #1615
  • feat(plugins): when clauses that test whether the project contains a file by @arnaud-ritti in #1620
  • fix(linux): start on Wayland with the NVIDIA driver by @l0ng-ai in #1625
  • feat(debugger): Reload Changed Classes in the editor context menu by @l0ng-ai in #1627
  • fix(language): update tree-sitter-haskell to 0.24.1 by @NealimeKenna in #1630
  • test(smoke): switch the failing test on in the saved configuration by @l0ng-ai in #1631
  • test(phpstan): read the pause before logging the run by @l0ng-ai in #1632
  • fix(editor): pad the Reformat File dialog by @Inf1mum in #1634
  • fix(debugger): offer to install php-debug when it is missing by @Inf1mum in #1633
  • feat(debugger): add PHP Remote Debug (Xdebug) run configuration by @Inf1mum in #1635
  • fix(editor): auto-save when the app is deactivated while focus is in a frame by @l0ng-ai in #1636
  • fix(debugger): offer to install Bash Debug, and point debugger hints to Settings by @l0ng-ai in #1637
  • fix(viewers): yield image viewer to registered text editor wrappers by @dengliu in #1638
  • fix(debugger): finish PHP Remote Debug: taken port, waiting state, Port field by @DanielADK in #1639
  • fix(debugger): debug PHP with php-debug on the configured PHP by @l0ng-ai in #1641
  • feat(run): Docker and Compose run targets by @andreabasile in #1640
  • fix(vim): save Normal-mode Vim edits by @l0ng-ai in #1642
  • fix(settings): fit long labels in aligned settings forms by @l0ng-ai in #1643
  • fix(java): list dependencies' implementations after the project's in Go to Implementation by @l0ng-ai in #1644
  • fix(remote): build the Docker run tests' helpers only where they run by @l0ng-ai in #1645
  • feat(plugins): open plugin API 1.2 by @l0ng-ai in #1654
  • Add Astro language support and editor mode by @d0whc3r in #712
  • fix(vcs): remove redundant commit message expansion by @l0ng-ai in #1652
  • feat(database): Oracle data source support by @boenkkk in #1510
  • feat(plugins): add background document-indexer API by @qjlqyf in #1021
  • chore(release): prepare the release commit with one command by @l0ng-ai in #1672
  • fix(java): support Lombok builders on compact record constructors by @egasa21 in #950
  • fix(vcs): keep local changes and staging intact across Git operations; roll back partial multi-repository operations by @l0ng-ai in #1701
  • perf(java): prewarm and cache configuration navigation by @qjlqyf in #947
  • fix(vcs): update, push, rebase, tags and file history behave as expected by @l0ng-ai in #1708
  • fix(window): keep macOS traffic lights still during live resize by @l0ng-ai in #1712
  • fix(agents): render local and web images in replies by @l0ng-ai in #1711
  • perf(agents): switch back to a long conversation without rebuilding it by @l0ng-ai in #1710
  • fix(welcome): allow cancelling project reopen and prevent startup reopen loop by @dengliu in #1706
  • fix(project-tree): search a file's own symbols, not its package, in Safe Delete and Find Usages by @jaw52 in #1688
  • fix(debugger): put no breakpoint on blank or comment-only lines by @ldg030201 in #1678
  • ci(release): mirror published releases to CNB by @l0ng-ai in #1683
  • perf(debugger): send each file's breakpoints together and redraw the gutter less by @ldg030201 in #1679
  • fix(tools): install GitHub releases when the API is rate-limited by @l0ng-ai in #1715
  • feat(updates): choose the update source, with a CNB mirror by @l0ng-ai in #1673
  • fix(terminal): keep Windows shell paths intact by @l0ng-ai in #1723
  • fix(debugger): run debug adapters on the tool search path by @l0ng-ai in #1725
  • fix(run): stop runs and terminals when the app exits by @l0ng-ai in #1727
  • fix(app): ask before quitting from the Dock or a logout on macOS by @l0ng-ai in #1730
  • fix(workspace): unify nested project discovery and run ownership by @l0ng-ai in #1716
  • fix(vcs): exclude symbolic aliases from containing branches by @l0ng-ai in #1747
  • perf(vfs): share nested repo GitignoreStacks and bound synchronous watch_tree startup by @dengliu in #1705
  • fix(window): keep merged project tabs from moving the frame or menu bar by @youngledo in #1697
  • fix(editor): use search-match foreground color on find highlights by @a-rookie-of-C-language in #1796
  • fix(menu): show tooltip for truncated labels by @a-rookie-of-C-language in #1797
  • fix(tabs): keep close button visible in squeezed tab strip by @a-rookie-of-C-language in #1798
  • fix(mybatis): skip annotation arguments when parsing mapper method names by @a-rookie-of-C-language in #1799
  • feat(debugger): flash the taskbar when a breakpoint hits unfocused by @a-rookie-of-C-language in #1803
  • fix(run): run Gradle module tests from the build root by @a-rookie-of-C-language in #1805
  • Revert merge-commit landings of #1796 #1797 #1798 #1799 #1803 #1805 by @a-rookie-of-C-language in #1814
  • fix(editor): use search-match foreground color on find highlights (re-land of #1796) by @a-rookie-of-C-language in #1815
  • fix(menu): show tooltip for truncated labels (re-land of #1797) by @a-rookie-of-C-language in #1816
  • fix(tabs): keep close button visible in squeezed tab strip (re-land of #1798) by @a-rookie-of-C-language in #1817
  • fix(mybatis): skip annotation arguments when parsing mapper method names (re-land of #1799) by @a-rookie-of-C-language in #1818
  • feat(debugger): flash the taskbar when a breakpoint hits unfocused (re-land of #1803) by @a-rookie-of-C-language in #1819
  • fix(run): run Gradle module tests from the build root (re-land of #1805) by @a-rookie-of-C-language in #1820
  • fix(http): join multipart request bodies with CRLF by @a-rookie-of-C-language in #1802
  • fix(editor): paste one line per caret when the counts match by @a-rookie-of-C-language in #1830
  • feat(usages): search Java usages in Project Files first, Project and Libraries on demand by @l0ng-ai in #1837
  • fix(vfs): tolerate fsync ENOTTY/EINVAL on filesystems without fsync by @a-rookie-of-C-language in #1804
  • fix(go): sweep Delve's leftover __debug_bin files when a session ends by @a-rookie-of-C-language in #1829
  • fix(project-tree): reveal WSL paths through the wsl.localhost share by @a-rookie-of-C-language in #1806
  • fix(vfs): hint at inotify limits when the file watcher hits them by @a-rookie-of-C-language in #793
  • fix(java): pass the configured Maven local repository to jdtls by @a-rookie-of-C-language in #1813
  • feat(trust): let users add trusted folders from settings by @a-rookie-of-C-language in #1812
  • test(smoke): retry the temp-directory cleanup on ENOTEMPTY by @a-rookie-of-C-language in #1838
  • fix(spelling): merge the two dictionary saves into one row by @a-rookie-of-C-language in #1833
  • feat(database): One-Row extractor, and ⌘C copies in the chosen extractor's format by @a-rookie-of-C-language in #1842
  • fix(i18n): fill in the Korean catalogs and align terms with IntelliJ and Microsoft by @ldg030201 in #1647
  • feat(plugins): let a plugin set its own icon by @arnaud-ritti in #1761
  • feat(plugins): right-click menu on the items of plugin tree and list views by @arnaud-ritti in #1746
  • fix(terminal): remove redundant scroll-to-end button by @l0ng-ai in #1849
  • docs(readme): show contributor avatars in the Community section by @l0ng-ai in #1848
  • feat(plugins): let a command read every file selected in the Project view by @arnaud-ritti in #1744
  • feat(plugins): let plugin code set context keys for its when clauses by @arnaud-ritti in #1762
  • fix(agents): don't offer the previous model's thinking levels for a new task by @a-rookie-of-C-language in #1846
  • fix(settings): align fallback font and size fields on the Appearance page by @Inf1mum in #1782
  • feat(plugins): let a command ask the user with a picker, an input box or a confirmation by @arnaud-ritti in #1779
  • fix(gradle): launch linked builds with the platform's path separators by @l0ng-ai in 1aec21b
  • docs(readme): add a Community section with Discord and the WeChat group by @l0ng-ai in 9bd4238
  • test(e2e): wait for xterm to open before pasting into the terminal by @l0ng-ai in 915fec5
  • fix(sdk): detect versioned PHP binaries such as php8.1 on PATH by @l0ng-ai in 9717748
  • docs: remove unused Kotlin debugging, Unity and workspace notes by @l0ng-ai in 6b0dc93
  • test(vcs): check the files a commit takes from its options by @l0ng-ai in c75a630
  • fix(workbench): align settings with right stripe icons by @l0ng-ai in 763bcc0

New contributors

Thanks to everyone who contributed for the first time:

Full Changelog: v0.1.37...v0.1.38

Don't miss a new openidea release

NewReleases is sending notifications on new releases.