This document records the known issues, limitations, and solutions for the Zoo Code JetBrains project.
The 3.96.0 Marketplace API warnings and JCEF compatibility work are tracked in issue #16. Release verification and the internal/experimental editor API migration remain open.
The current plugin implementation heavily relies on JCEF capabilities. In environments where JCEF cannot function properly, the plugin may fail to load normally.
Android Studio's default startup runtime does not include JCEF capabilities, requiring manual configuration to enable it.
- Android Studio on all platforms
-
Download a JCEF-Compatible JetBrains Runtime
Download a JetBrains Runtime (JBR) with JCEF support:
👉 https://github.com/JetBrains/JetBrainsRuntime/releases
Choose a release with:
jbr_jcefin the name- Correct architecture (osx-aarch64, linux-x64, or windows-x64)
Example:
jbr_jcef-17.0.11-osx-aarch64-b1063.2.tar.gzUnpack it somewhere, e.g.:
~/jbr/jbr_jcef -
Launch Android Studio and Open the Runtime Selector
- Start Android Studio.
- Press Ctrl+Shift+A (Windows/Linux) or Cmd+Shift+A (macOS) to open "Find Action".
- Search for:
Choose Boot Java Runtime for the IDE - Select it and choose the folder where you extracted the JBR (e.g., ~/jbr/jbr_jcef).
-
Restart Android Studio
After selecting the new runtime, Android Studio will prompt you to restart. Confirm, and it will relaunch with the new runtime.
-
Verify the Runtime
Go to Help → About to confirm the IDE is now running with the new JBR. The version should indicate JCEF support (e.g., JetBrains Runtime jbr-17.0.11+7-b1238.56-jcef).
-
Revert if Needed
You can always use the same "Choose Boot Java Runtime for the IDE" action to switch back to the default runtime if needed.
- Go to Help > Edit Custom VM Options
- Add the following line to the
studio64.exe.vmoptionsorstudio.vmoptionsfile:-Didea.browser.enable.jcef=true - Restart Android Studio
- Go to Help > Edit Custom Properties
- Add the following line to the
idea.propertiesfile:idea.browser.enable.jcef=true - Restart Android Studio
- Go to File > Settings (or Android Studio > Settings on macOS)
- Navigate to Appearance & Behavior > System Settings
- Look for JCEF-related options and enable them if available
- Restart Android Studio
On Linux ARM platforms, JCEF may fail to initialize native processes properly, leading to plugin startup failures.
- Linux ARM distributions (including ARM64)
No solution available at this time.
From IntelliJ Platform 2026.2 (build 262), JetBrains packages JCEF as a separate bundled plugin with the id com.intellij.modules.jcef. JCEF is no longer part of the IDE platform. When this bundled plugin is not present, the Zoo Code view cannot render.
The plugin does not crash. It logs the reason and shows a warning notification. The Zoo Code tool window stays empty. The IDE log shows the state in the startup line JCEF: CLASSES_MISSING.
- IDEs based on IntelliJ Platform build 262 or newer without the bundled JCEF plugin
- Open Settings → Plugins → Installed and search for JCEF.
- Enable the bundled JCEF plugin if it is disabled.
- Restart the IDE.
If the bundled JCEF plugin is not in the list, this IDE build does not ship JCEF, and the Zoo Code view cannot run in it. IDEs older than 2026.2 get JCEF from the runtime; see section 1.1.
The plugin requires Node.js command line tools to function properly. Node.js executable must be available in the system PATH.
- All platforms
- Open a terminal or command prompt
- Run the following command:
node --version
- If Node.js is installed, this will display the version number
- If not, you'll need to install Node.js
- Download Node.js from the official website: https://nodejs.org/
- Choose the LTS (Long Term Support) version for stability
- Follow the installation instructions for your operating system
- Ensure the option to add Node.js to PATH is enabled during installation
- After installation, open a new terminal or command prompt
- Run:
or
echo $PATH # On Linux/macOS
echo %PATH% # On Windows
- Check that the Node.js installation directory is included in the PATH
- Edit your shell profile file (
.bashrc,.zshrc, etc.) - Add the following line (adjust the path as needed):
export PATH="/usr/local/nodejs/bin:$PATH"
- Save the file and restart your terminal
- Open System Properties > Environment Variables
- Under "System variables", find and select "Path"
- Click "Edit" and add the Node.js installation directory
- Click OK to save changes
Measured triggers, fixes, and remaining limits are recorded in the validation report, with test setup and evidence-review instructions in the linked harness README.
Production terminal creation activates the new terminal and can move Swing
focus from the chat OSR canvas to JBTerminalPanel.
TerminalCreationFocusGuard captures the exact chat owner before
initialization and restores that owner once after the platform activation
settles. It restores only when focus ended inside the newly created terminal,
chat remains visible, and no user click, key, or Tab traversal intervened. The
guard expires at the callback or 1500 ms after creation; there is no polling or
permanent listener. Instrumented probes retain pre- and post-creation typing
with the owner back on the chat OSR canvas, and pure decision tests are in the
CI allowlist.
Deliberate Terminal user actions are expected platform behavior, not defects. The first show of the Terminal tool window, stock new-tab actions outside the plugin-owned creation path, and stock tab selection request terminal focus by design. The plugin does not wrap these stock actions. The preserving-show and deliberate-show harness checks for these paths remain required. macOS, native Windows, and other IDE builds remain untested.
Two earlier harness failures were test-setup defects, not current product issues: an IDEA script-launcher warning balloon covered the chat textarea, and a harness step clicked the browser retired during webview replacement. The fixture now uses the native launcher, waits for smart mode, and references the currently mounted browser. No balloon-restoration or permanent focus code was added to the plugin. Modal dismissal and visibility-only hide/show still do not automatically activate chat.
Open pending reporter or Windows 11 confirmation. The fix passed in hosted CI, but the linked run predates the latest workflow, harness, Kotlin, and relay changes, which require fresh CI validation. An earlier Windows live run lost one character during a preserving normal-file open before the diff began. Preserving file and diff opens now share the suspending file-editor API to avoid the synchronous loading loop. The expanded regression opens 12 Java files followed by diffs while typing. The expanded local regression, both Windows fixture jobs, and three fresh Windows live Solheim conversations passed. The reporter's Windows 11 configuration remains unverified. See the validation report.
If you encounter any of the above issues, follow these general troubleshooting steps:
- Check IDE Logs: Look for error messages in the IDE logs that might indicate the root cause
- Verify System Requirements: Ensure your system meets all requirements for both the IDE and the plugin
- Update Everything: Make sure your IDE, the plugin, and all dependencies are up to date
- Clean Reinstall: Try uninstalling and reinstalling the plugin
- Check for Conflicts: Disable other plugins that might conflict with JCEF or Node.js
If you encounter issues not documented here, please report them with the following information:
-
Environment Details:
- Operating System and version
- JetBrains IDE and version
- Node.js version
- Plugin version
-
Error Messages: Full error messages and stack traces
-
Steps to Reproduce: Detailed steps to reproduce the issue
-
Expected vs Actual Behavior: What you expected to happen and what actually happened
Report issues through the project's issue tracker on GitHub.