Skip to content

feat(jetbrains): add JetBrains IDE plugin (PyCharm/WebStorm) - #296

Closed
rlarin wants to merge 15 commits into
pixel-agents-hq:mainfrom
rlarin:jetbrains-support
Closed

feat(jetbrains): add JetBrains IDE plugin (PyCharm/WebStorm)#296
rlarin wants to merge 15 commits into
pixel-agents-hq:mainfrom
rlarin:jetbrains-support

Conversation

@rlarin

@rlarin rlarin commented Jun 3, 2026

Copy link
Copy Markdown

Summary

Adds a JetBrains Platform plugin so Pixel Agents runs inside PyCharm, WebStorm, and other IntelliJ-based IDEs (2025.1+).

  • Embedded office via JCEF browser pointed at the standalone pixel-agents server (?ide=jetbrains)
  • + Agent opens an IDE terminal running claude --session-id <uuid> through a native JBCefJSQuery bridge
  • ServerManager boots/reuses the standalone server via ~/.pixel-agents/server.json
  • WebSocket transport for all other webview messages
  • Plugin icon + JetBrains-specific description
  • build:jetbrains npm scripts (Windows + unix)
  • Ignore Gradle/IntelliJ build artifacts and *.stackdump

Notes / follow-ups

  • Agents require pixel-agents >= 1.3.0 on npm (current latest is 1.0.2 with no bin); the plugin spawns the server via npx pixel-agents. Publish 1.3.0 before release.
  • Marketplace listing #977027 metadata (icon/description) is served by JetBrains, not the bundled jar — update the listing separately.

Test plan

  • npm run build:jetbrains produces the plugin zip
  • Install from disk in PyCharm, office renders
  • + Agent opens terminal + spawns a character (with a 1.3.0 server running)

🤖 Generated with Claude Code

rlarin and others added 5 commits June 3, 2026 15:47
Thin Kotlin plugin that embeds the existing React webview via JCEF and
manages Claude Code terminal lifecycle in JetBrains IDEs.

- Gradle scaffold: IntelliJ Platform Gradle Plugin 2.16, Kotlin 2.1.21, Gradle 9
- ServerManager: starts/detects npx pixel-agents server, non-blocking (portFuture)
- TerminalManager: opens IDE terminal with claude --session-id, EDT-safe, IOException-safe
- PixelAgentsBrowserPanel: JCEF browser with JS bridge for launchAgent, deferred URL load
- PixelAgentsService: project service with Node.js availability check and notification
- PixelAgentsToolWindowFactory: bottom panel tool window
- Webview: JetBrains runtime detection via ?ide=jetbrains URL param, JetBrainsTransport
- GitHub Actions CI: jetbrains-release.yml triggered on jetbrains-v* tags
- Windows-compatible: cmd /c npx for process launching, @volatile on shared state
Keeps the working tree clean of npx/Gradle leftovers from building the
JetBrains plugin: IntelliJ Platform sandbox, the stray org/ output dir,
and *.stackdump crash files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@vercel

vercel Bot commented Jun 3, 2026

Copy link
Copy Markdown

@rlarin is attempting to deploy a commit to the pablodelucca's projects Team on Vercel.

A member of the Team first needs to authorize it.

rlarin and others added 10 commits June 3, 2026 16:52
Without a files whitelist, npm publish falls back to .gitignore, which
excludes dist/ — so the published tarball shipped without dist/cli.js
and the `pixel-agents` bin was non-functional (the JetBrains plugin
relies on `npx pixel-agents` to launch the standalone server).

Add a files whitelist (dist + icon) and a prepublishOnly build so the
package always ships the CLI bundle, webview, assets, and hook script.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Publishes this fork under independent identities so it no longer
collides with the upstream pablodelucca-owned npm package and JetBrains
Marketplace listing:

- npm package: pixel-agents -> it-crowd-pixel-agents (bin + npx target)
- JetBrains plugin id: com.pixelagents.jetbrains -> io.github.rlarin.pixelagents
  (also fixes the Marketplace metadata override that hid the bundled
  icon/description)
- VS Code publisher/displayName + repository URL updated
- ServerManager spawns `npx it-crowd-pixel-agents`

LICENSE retains Pablo De Lucca's MIT copyright; README and plugin
description credit the upstream project explicitly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The prettier/eslint invocations single-quoted the output path, which
cmd.exe does not strip, so `npm run package` failed on Windows with
"No files matching the pattern" — breaking prepublishOnly and any
production build/publish from Windows. Quote with double quotes on
win32, single quotes elsewhere.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
On a machine without the package cached, `npx it-crowd-pixel-agents`
can prompt to confirm the install; the plugin spawns it non-interactively
so the prompt would stall server startup. Add -y to auto-confirm.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The IntelliJ Platform Gradle plugin defaults untilBuild to 251.* when
building against 2025.1, so the plugin was flagged "Not compatible" on
PyCharm/WebStorm 2026.1. Raise the cap to 261.* so it installs on
2026.1.x.

Note: the embedded-terminal API (TerminalView.createLocalShellWidget)
is deprecated and may be non-functional on 2026.1; "+ Agent" terminal
launch needs verification there and a possible migration to
TerminalToolWindowTabsManager.

Also add SCREENSHOT_PROMPT.md with instructions to produce the
Marketplace screenshot.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
First release under the it-crowd-pixel-agents identity with 2026.1 IDE
compatibility.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Two complementary refresh paths after the occasional 1-3s lag before a
newly launched agent is detected and broadcast:

- Webview: a refresh button in the zoom controls re-sends webviewReady
  over the transport, prompting the server (or VS Code extension) to
  re-broadcast the full state (agents, layout, assets) without losing
  camera/zoom. Works in VS Code, standalone, and JetBrains.
- JetBrains: a native "Reload" title action on the tool window that
  re-navigates the embedded JBCef browser as a hard fallback.

Bump npm 1.3.2 (ships the webview button) and plugin 0.3.0 (ships the
reload action).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The tool window stripe showed "Pixel Agents" and a "?" placeholder
because no icon was registered. Rename the tool window to "IT Crowd"
and add a 13x13 (+@2x) tool-window icon derived from the plugin icon.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.3.2 was published without the webview refresh button; bump to 1.3.3
to ship the rebuilt webview.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
vsce errors when both a .vscodeignore and a package.json "files" field
are present, and "files" is required so npm publish includes dist/.
Removing .vscodeignore lets both vsce and npm pack from the same
whitelist (dist + icon.png).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@rlarin

rlarin commented Jun 4, 2026

Copy link
Copy Markdown
Author

Superseded by #300, which contains the same JetBrains plugin and fixes without the downstream fork-specific renaming. Closing in favor of that clean branch.

@rlarin rlarin closed this Jun 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant