No, apologies, it was me being confusing!
I meant that the julia panel is currently empty no matter what I do.
I’ve restarted the IDE. I’ve regenerated plots, but the julia panel just has “Nothing to show” in it.
Okay, that should not be the case. let me try to recreate it locally.
Can you check if there are any errors in your logs? (check Help - Show Log in Explorer and look for any errors)
I got a popup when I navigated to the julia panel saying that there were IDE internal errors. These were the two bits of info available …
Unhandled exception in EDT
com.intellij.openapi.diagnostic.UnhandledException: com/intellij/ui/jcef/JBCefBrowserBase
at com.intellij.openapi.application.impl.ExceptionsKt.processUnhandledException(exceptions.kt:56)
at com.intellij.platform.ide.bootstrap.StartupErrorReporter.processException(StartupErrorReporter.java:349)
at com.intellij.ide.IdeEventQueue.processException(IdeEventQueue.kt:476)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:738)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:637)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:568)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0$0(IdeEventQueue.kt:388)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:941)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0(IdeEventQueue.kt:387)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$0(IdeEventQueue.kt:1122)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1122)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0(IdeEventQueue.kt:382)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:422)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: java.lang.NoClassDefFoundError: com/intellij/ui/jcef/JBCefBrowserBase
at com.ilscipio.language.julia.sciview.JuliaScientificPanel.<init>(JuliaScientificPanel.java:64)
at com.ilscipio.language.julia.sciview.JuliaScientificToolWindowFactory.createToolWindowContent(JuliaScientificToolWindowFactory.java:23)
at com.intellij.openapi.wm.impl.ToolWindowImpl.createContentIfNeeded(ToolWindowImpl.kt:788)
at com.intellij.openapi.wm.impl.ToolWindowImpl.scheduleContentInitializationIfNeeded$intellij_platform_ide_impl(ToolWindowImpl.kt:765)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.doShowWindow(ToolWindowManagerImpl.kt:987)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.showToolWindowImpl(ToolWindowManagerImpl.kt:918)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activateToolWindow$intellij_platform_ide_impl(ToolWindowManagerImpl.kt:615)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activateToolWindow$intellij_platform_ide_impl$default(ToolWindowManagerImpl.kt:582)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activated$intellij_platform_ide_impl(ToolWindowManagerImpl.kt:1877)
at com.intellij.openapi.wm.impl.SquareAnActionButton.setSelected(SquareStripeButton.kt:391)
at com.intellij.openapi.actionSystem.ToggleAction.actionPerformed(ToggleAction.java:62)
at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:283)
at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$0(ActionButton.java:262)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks$lambda$1$0(ActionManagerImpl.kt:623)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.ThrowableComputableToLambda.invoke(coroutines.kt:351)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runWriteIntentReadAction(NestedLocksThreadingSupport.kt:710)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:1218)
at com.intellij.openapi.application.WriteIntentReadAction.computeThrowable(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks$lambda$1(ActionManagerImpl.kt:812)
at com.intellij.concurrency.ThreadContext.installThreadContext(threadContext.kt:307)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks(ActionManagerImpl.kt:620)
at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:262)
at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:578)
at java.desktop/java.awt.Component.processEvent(Component.java:6396)
at java.desktop/java.awt.Container.processEvent(Container.java:2260)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4836)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4932)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4562)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4503)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2304)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4836)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:734)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:711)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:731)
... 16 more
Caused by: java.lang.ClassNotFoundException: com.intellij.ui.jcef.JBCefBrowserBase PluginClassLoader(plugin=PluginMainDescriptor(name=Flexible Julia, id=com.flexible.julia, version=2026.9.44, isBundled=false, path=~\AppData\Roaming\JetBrains\IntelliJIdea2026.2\plugins\flexible-julia), packagePrefix=null, state=active, parents=ContentModuleDescriptor(id=intellij.libraries.groovy, loadingRule=EMBEDDED) <- PluginMainDescriptor(name=Groovy Scripting, id=com.intellij.groovy.scripting, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\groovy-scripting), ContentModuleDescriptor(id=intellij.platform.vcs.log.graph) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.xml.emmet) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.ssh.core, loadingRule=REQUIRED) <- PluginMainDescriptor(name=SSH, id=intellij.ssh.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-ssh-plugin), ContentModuleDescriptor(id=intellij.platform.ssh, loadingRule=REQUIRED) <- PluginMainDescriptor(name=SSH, id=intellij.ssh.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-ssh-plugin), ContentModuleDescriptor(id=intellij.platform.ssh.attach) <- PluginMainDescriptor(name=SSH, id=intellij.ssh.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-ssh-plugin), ContentModuleDescriptor(id=intellij.platform.vcs.log) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.smRunner, loadingRule=REQUIRED) <- PluginMainDescriptor(name=Test Runner, id=intellij.testRunner.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-testRunner-plugin), ContentModuleDescriptor(id=intellij.platform.structureView) <- PluginMainDescriptor(name=Structure View, id=intellij.structureView.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-structureView-plugin), ContentModuleDescriptor(id=intellij.platform.todo) <- PluginMainDescriptor(name=TODO Comments, id=intellij.todo.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-todo-plugin), ContentModuleDescriptor(id=intellij.platform.bookmarks, loadingRule=REQUIRED) <- PluginMainDescriptor(name=Bookmarks Manager, id=intellij.bookmarks.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-bookmarks-plugin), ContentModuleDescriptor(id=intellij.platform.vcs.dvcs) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.structuralSearch) <- PluginMainDescriptor(name=Structural Search, id=intellij.structuralSearch.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-structuralSearch-plugin), ContentModuleDescriptor(id=intellij.relaxng) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.vcs.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.vcs.log.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.vcs.dvcs.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.spellchecker) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.spellchecker.xml) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.scriptDebugger.protocolReaderRuntime) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.scriptDebugger.backend) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.scriptDebugger.ui) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.tasks) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.tasks.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.collaborationTools.auth.base) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.collaborationTools.auth) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.collaborationTools) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), )
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:154)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
... 55 more
java.lang.NoClassDefFoundError: com/intellij/ui/jcef/JBCefBrowserBase
at com.ilscipio.language.julia.sciview.JuliaScientificPanel.<init>(JuliaScientificPanel.java:64)
at com.ilscipio.language.julia.sciview.JuliaScientificToolWindowFactory.createToolWindowContent(JuliaScientificToolWindowFactory.java:23)
at com.intellij.openapi.wm.impl.ToolWindowImpl.createContentIfNeeded(ToolWindowImpl.kt:788)
at com.intellij.openapi.wm.impl.ToolWindowImpl.scheduleContentInitializationIfNeeded$intellij_platform_ide_impl(ToolWindowImpl.kt:765)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.doShowWindow(ToolWindowManagerImpl.kt:987)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.showToolWindowImpl(ToolWindowManagerImpl.kt:918)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activateToolWindow$intellij_platform_ide_impl(ToolWindowManagerImpl.kt:615)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activateToolWindow$intellij_platform_ide_impl$default(ToolWindowManagerImpl.kt:582)
at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.activated$intellij_platform_ide_impl(ToolWindowManagerImpl.kt:1877)
at com.intellij.openapi.wm.impl.SquareAnActionButton.setSelected(SquareStripeButton.kt:391)
at com.intellij.openapi.actionSystem.ToggleAction.actionPerformed(ToggleAction.java:62)
at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:283)
at com.intellij.openapi.actionSystem.impl.ActionButton.lambda$performAction$0(ActionButton.java:262)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks$lambda$1$0(ActionManagerImpl.kt:623)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.ThrowableComputableToLambda.invoke(coroutines.kt:351)
at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runWriteIntentReadAction(NestedLocksThreadingSupport.kt:710)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:1218)
at com.intellij.openapi.application.WriteIntentReadAction.computeThrowable(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks$lambda$1(ActionManagerImpl.kt:812)
at com.intellij.concurrency.ThreadContext.installThreadContext(threadContext.kt:307)
at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.performWithActionCallbacks(ActionManagerImpl.kt:620)
at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:262)
at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:578)
at java.desktop/java.awt.Component.processEvent(Component.java:6396)
at java.desktop/java.awt.Container.processEvent(Container.java:2260)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4836)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4932)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4562)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4503)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2304)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4836)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:734)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:711)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:731)
at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.kt:637)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:568)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0$0(IdeEventQueue.kt:388)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:941)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0(IdeEventQueue.kt:387)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$0(IdeEventQueue.kt:1122)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1122)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0(IdeEventQueue.kt:382)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:422)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: java.lang.ClassNotFoundException: com.intellij.ui.jcef.JBCefBrowserBase PluginClassLoader(plugin=PluginMainDescriptor(name=Flexible Julia, id=com.flexible.julia, version=2026.9.44, isBundled=false, path=~\AppData\Roaming\JetBrains\IntelliJIdea2026.2\plugins\flexible-julia), packagePrefix=null, state=active, parents=ContentModuleDescriptor(id=intellij.libraries.groovy, loadingRule=EMBEDDED) <- PluginMainDescriptor(name=Groovy Scripting, id=com.intellij.groovy.scripting, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\groovy-scripting), ContentModuleDescriptor(id=intellij.platform.vcs.log.graph) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.xml.emmet) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.ssh.core, loadingRule=REQUIRED) <- PluginMainDescriptor(name=SSH, id=intellij.ssh.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-ssh-plugin), ContentModuleDescriptor(id=intellij.platform.ssh, loadingRule=REQUIRED) <- PluginMainDescriptor(name=SSH, id=intellij.ssh.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-ssh-plugin), ContentModuleDescriptor(id=intellij.platform.ssh.attach) <- PluginMainDescriptor(name=SSH, id=intellij.ssh.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-ssh-plugin), ContentModuleDescriptor(id=intellij.platform.vcs.log) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.smRunner, loadingRule=REQUIRED) <- PluginMainDescriptor(name=Test Runner, id=intellij.testRunner.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-testRunner-plugin), ContentModuleDescriptor(id=intellij.platform.structureView) <- PluginMainDescriptor(name=Structure View, id=intellij.structureView.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-structureView-plugin), ContentModuleDescriptor(id=intellij.platform.todo) <- PluginMainDescriptor(name=TODO Comments, id=intellij.todo.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-todo-plugin), ContentModuleDescriptor(id=intellij.platform.bookmarks, loadingRule=REQUIRED) <- PluginMainDescriptor(name=Bookmarks Manager, id=intellij.bookmarks.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-bookmarks-plugin), ContentModuleDescriptor(id=intellij.platform.vcs.dvcs) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.structuralSearch) <- PluginMainDescriptor(name=Structural Search, id=intellij.structuralSearch.plugin, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\plugins\platform-structuralSearch-plugin), ContentModuleDescriptor(id=intellij.relaxng) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.vcs.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.vcs.log.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.vcs.dvcs.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.spellchecker) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.spellchecker.xml) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.scriptDebugger.protocolReaderRuntime) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.scriptDebugger.backend) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.scriptDebugger.ui) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.tasks) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.tasks.impl) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.collaborationTools.auth.base) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.collaborationTools.auth) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), ContentModuleDescriptor(id=intellij.platform.collaborationTools) <- PluginMainDescriptor(name=IDEA CORE, id=com.intellij, version=262.8665.337, isBundled=true, path=C:\Program Files\JetBrains\IntelliJ IDEA 2026.2.0.1\lib), )
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.kt:154)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:490)
... 55 more
Thx that’s helpful. I think jetbrains removed the jcbef browser for this release. I need to check but that could be a genuine issue. Apart from that I am sure to fix it later today. I will post a direct link when I’m done. Thanks
Hotfix Release: Flexible Julia 2026.9.45
Fixes:
- Julia tool window failed to open (“Nothing to show”) on IntelliJ 2026.2 and other recent releases - the Docs panel no longer uses JCEF, restoring the tool window across the latest JetBrains IDEs
New Features:
- Julia tool window now keeps your plots, dataframes, and variables across IDE restarts; variables refresh once you run again, and Clear still empties the panel
Hotfix for 2026.9.44. The Docs panel redesign broke the Julia tool window on IntelliJ 2026.2 and other recent JetBrains releases - sorry about that. Fixed by dropping JCEF.
While I was in there, I also added persistence for the tool window - your plots, dataframes, and variables now survive IDE restarts.
@bigtoedsloth: Thanks for the heads-up - that was a real incompatibility with the latest releases.
Version 2026.9.45 has already been approved by JetBrains and is available on the marketplace.
I pulled the 2026.9.44 release, that were incompatible and switched to different classes.
New Release: Flexible Julia 2026.9.46
New Features:
- Joovy Incremental Eval: Saving a Julia file now re-evaluates only the definitions that changed instead of the whole file
- Joovy Speculative Compilation: The editor quietly pre-compiles the function under your caret and its dependencies; set
speculate = truein[Joovy]section of LocalPreferences.toml to also pre-compile whole modules after load - Joovy Smart Completion: Code completion now ranks functions your live session actually calls above cold ones - no visual change, just better ordering
- Bundled Joovy 0.3.0: Hardened IPC parameter validation, warmup trace compaction, and a first IPC test suite
Fixes:
- “Comment with Block Comment” now wraps the selection in
#= ... =#- previously it inserted only the opening marker
Joovy keeps getting smarter. The big one here is incremental re-evaluation - save a file and only the definitions you actually changed get re-evaluated. No more waiting for the whole file to reload.
I am also experimenting with speculative compiling: the editor watches where your cursor is and pre-compiles that function and its dependencies in the background. By the time you run it, it’s already warm. Enable speculate = true in your LocalPreferences.toml if you want it to go further and pre-compile whole modules.
The completion ranking is subtle but nice - functions you’ve actually been calling bubble up above ones you haven’t touched.
New Release: Flexible Julia 2026.9.47
New Features:
- Fatou Language Server: Added Fatou (https://fatou.dev/) as another Language Server option alongside LanguageServer.jl and JETLS
Fatou has been gaining some traction in the community, so I added it as a third language server option. You can switch between LanguageServer.jl, JETLS, and Fatou in Settings - Julia - Language Server. I also removed the “experimental” label from JETLS - i think it is well integrated by now.
Give it a try and let me know how it compares.
New Release: Flexible Julia 2026.9.48
New Features:
- AI Tab: Chat with Claude Code, Codex, Cursor, Gemini, Antigravity, Windsurf or Aider without leaving the IDE - the plugin auto-detects the CLI you already have installed
- Session History: Dropdown in the AI tab to reopen earlier chats or start a blank one
- Capture Button: Attach a screen region or current editor selection to your prompt
- MCP Server: Let external AI agents drive your live Julia session - run code in the REPL, read results, inspect workspace variables, run notebook cells, start runs, control the debugger - 27 tools in total
- One-Click MCP Install: Install the MCP server into a detected agent directly from Settings → Julia → AI
- Multi-Project MCP: Server serves every open project from one port, so multiple projects and IDE windows work simultaneously
- AI Settings: Single switch to turn off all AI features, plus MCP port, token, and auto-start options
Changes:
- Hidden REPL evaluation now runs every statement you send instead of only the first, captures printed output, and no longer blocks other IDE requests
Fixes:
- Exception on project close caused by a late UI update from the Packages panel

AI Features have arrived!
This is a major new feature: Based on my work on my own AIVory Genie, I decided to backport some of the AI features to Flexible Julia. But before I begin a heads up to the non-ai-users: everything can be disabled in the settings (File - Settings - Languages - Julia - AI - Enable AI features). If you do all AI features are permanently turned off.
But to the rest of us, here’s what you can do with it:
-
AI Chat: There is a new AI chat tab in our Julia panel, that lets you chat with whatever coding assistant you’re already using - Claude Code, Cursor, Codex, Gemini, Antigravity, Windsurf, Aider - without leaving the IDE. It finds your CLI automatically and gives you a dropdown to select the agent, permissions, model etc.
-
REPL & Context sharing: The AI chat hooks into your REPL session, open files and more - so it better understands what you are looking at. There is also a tiny “magic wand” you can use to give context - it takes screenshots, or when snapping parts of code, will give the agent a reference of the file and lines you are referencing.
-
MCP Server: This lets external AI agents actually control your Julia session: run code, read results, inspect variables, execute notebook cells, control the debugger. 27 tools in total. If you’re doing agentic coding, your AI can now talk directly to your live Julia environment. The MCP server can be installed via One-click install from the settings. It works across multiple projects and IDE windows.
-
Plots/Data/Variables: all session infos will be displayed in your IDE in our beloved Julia panel.
Anyway, let me know what you think about it.
New Release: Flexible Julia 2026.9.49
New Features:
- Joovy Compile-Time Inspections: Rules with quick fixes, configurable under Editor → Inspections → Julia → Joovy compile time
- Runtime Rules from Live REPL: Detects slow compilation, over-specialization, re-inference, allocation-heavy methods
- Joovy On by Default: No longer experimental - bundled Joovy updated to 0.4.1
I added compile-time inspections.
I was inspired by the excellent juliacon session from @gbaraldi on Optimizing the optimizing compiler. It sounded like something the IDE & Joovy could be helpful with. So Joovy and Flexible Julia now analyze your code as you write and flag performance issues before you even run anything: slow compilation, over-specialization, re-inference, allocation-heavy methods. Joovy gives runtime stats, while the plugin looks for obvious design issues in your code. You can configure them under Editor - Inspections - Julia - Joovy compile time.
These aren’t static rules either - they’re informed by your live REPL session. The inspector knows what’s actually happening at runtime.
Oh and: Joovy just graduated from experimental to default. I am now enabling it for everyone, because I think it is generally safe. You can disable it in settings or let me know if it ever causes issues.
New Release: Flexible Julia 2026.9.50
New Features:
- External AI Providers: Chat with Ollama, OpenAI API, Anthropic API, or Gemini API directly from the AI tab
- Ollama Auto-Detection: Local Ollama server detected on startup and appears automatically in settings
- Provider Management: Add/edit/remove dialog with test-connection button and per-provider API key storage (PasswordSafe)
- Model Switching: Model list refreshes when the active provider changes, including live model discovery from the server
- Unified AI Dropdown: Backend combo in toolbar and Settings now shows API providers alongside detected CLI agents
I’ve been working on the AI integration some more and added a broader support.
You can now connect directly to Ollama, OpenAI, Anthropic, or Gemini APIs from the AI tab. There’s a proper add/edit/remove dialog with connection testing and secure API key storage via PasswordSafe in our Settings now (File - Settings - Language - Julia - AI tab - External). And I also try to autodetect ollama on startup.
The model list updates live when you switch providers - including discovering what models your Ollama server actually has available.
Is there support for https://openrouter.ai/ ?
are the API keys stored in the OS keyring or via another method? just curious ![]()
Yes, you can add it via File - Settings - Languages - Julia - AI and add it as an external provider:
- Add a new provider, select OpenAI as the kind.
- Change the Base URL to
https://openrouter.ai/api - Enter your OpenRouter API key.
- The model list populates from OpenRouter’s catalog.
Tell me if you got any problems with it ![]()
The plugin stores API keys through the JetBrains PasswordSafe API. PasswordSafe delegates to the OS credential store. See: Persisting Sensitive Data | IntelliJ Platform Plugin SDK
As JetBrains is taking some time to approve my changes today, here’s a quick download link:
https://plugins.jetbrains.com/plugin/download?rel=true&updateId=1149379
Install via File - Settings - Plugins - Install from Disk
New Release: Flexible Julia 2026.9.52
New Features:
- Various Editor Changes: Paired block markers, Move Statement, Join Lines, rename validation, qualified Copy Reference, navigation bar & Alt+Q context, method-count Code Vision, color swatches, rainbow variables, and arrangement rules
- Test Source Recognition:
test/andruntests.jlnow treated as test sources,include(...)feeds into the include graph - New file/code templates, SDK banner, and Julia submenu in editor context menu
Fixes:
- No more freeze when switching the language server
- Docs panel now renders README tables, badges, and wide images correctly
Just an editor polish release. Lots of small things that add up - paired block markers, rainbow variables, proper Move Statement support.
New Release: Flexible Julia 2026.9.53
New Features:
- AI Quick Actions: Right-click a Julia file for Explain Code, Improve Code, Fix This Problem, Add Comments, Explain Last REPL Error, and Ask Julia AI
- Floating AI Toolbar: Select code and get Explain, Improve, and Ask buttons inline
- Alt+Enter AI Fix: Warnings and errors now offer “Fix this problem with Julia AI”
- File Reference Chips: Chat shows a clickable file chip instead of pasting code inline
AI is now woven into the editor. There is a new floating toolbar on top of the editor that makes it easier to simply say “explain this file” or “improve it”. I am also offering to auto fix problems with your agent.
I also fixed a bug in how file references are handled. It will never copy entire files, but only reference them, which improves token consumption.
Remember: you can always turn off the AI features in the settings! (File - Settings - Languages - Julia - AI Tab)
New Release: Flexible Julia 2026.9.53-56
- SDK auto-detection overhaul: REPL, run configs, package manager, and Joovy now all auto-detect Julia when saved paths go stale
- Missing package balloon with one-click install
- REPL and Run/Debug can now use IPC concurrently
- Various Joovy stability fixes
I got contacted by someone who bumped into issues after upgrading Julia on windows. So this is mostly a bugfix release for that. But while at it, I also improved joovy and fixed some concurrent session issues.
Oh and missing packages now spawn a popup that ask you to install them with a click.
New Release: Flexible Julia 2026.9.57
New Features:
- Kaimon.jl Support: Optional MCP server integration alongside the built-in server (off by default)
- One-Click Install: Notification offers to install Kaimon if the command is missing
- Multi-Client Install: Single click installs Kaimon into Claude Code, Codex CLI, Gemini CLI, Cursor, Windsurf or Antigravity
- REPL Session Gate: Your Julia REPL joins Kaimon as a session, so agent code runs in the REPL you are looking at
- Smart Tool Filtering: IDE trims Kaimon’s tool list to what applies here (41 of 52), hiding VS Code and nested-agent tools
This one is going to make @kahliburke happy, lol. I am adding optional support for Kaimon.jl by as a second MCP server. It is off by default and the built-in server keeps working on its own. You can also run both at once since their tool names do not overlap. So this may give you additional tools. The combination of both also give you access to our IDE specific tools - so you get more out of them.
To enable, go to Settings - Languages & Frameworks - Julia - AI - Enable Kaimon (optional).
Two things to note:
- Kaimon requires Julia 1.12+. The install option is hidden below that version.
- On Windows, Kaimon’s
extool does not return. The call becomes a background job and stays there. This reproduces without the plugin involved, so I think it is an upstream or environment issue, not a plugin bug. The REPL-gate feature depends on it, so Windows users may want to wait for a fix upstream.
@kahliburke: Thank you for Kaimon.jl!














