OpenLayer v0.9.0-alpha
Pre-releaseOpenLayer is a Photoshop UXP panel that drives your own local ComfyUI server. Nothing is uploaded anywhere: the plugin talks to 127.0.0.1 and to your document, and to nothing else.
This is an alpha. Become a tester — the page explains what feedback is most useful and where to file it.
Install
- Start ComfyUI on port 8190. OpenLayer defaults to
http://127.0.0.1:8190so it does not collide with another tool already using8188. If ComfyUI is already running on8188, start a second instance for OpenLayer:Confirm it answers:python main.py --listen 127.0.0.1 --port 8190 --preview-method autocurl http://127.0.0.1:8190/system_stats - Download and unzip
openlayer-v0.9.0-alpha.zip. - Install Adobe UXP Developer Tool (free, from Creative Cloud Desktop under Marketplace > Plugins, or Adobe's developer site).
- In UXP Developer Tool: Add Plugin → select the
manifest.jsonfrom the unzipped folder → Load. - In Photoshop: Plugins > OpenLayer. The Settings screen has a connection check — run it first.
openlayer-comfyui-setup-0.9.0.zip is optional and separate. It contains the workflow JSONs, the model list with download URLs and target folders, and a downloader script — no model weights (they are ~85 GB and two are licence-restricted). Use it if you want to set up a ComfyUI install that matches the presets in the panel.
Tested versions
Two different claims here, and it is worth keeping them apart.
What the plugin requires: Photoshop 2024 or newer — the manifest declares minVersion 25.0.0. Windows or macOS, Node.js 18+ only if you build from source rather than using the zip. Note that 2024 is a declared floor: development happens on Photoshop 2025, and no build of 2024 has been run against this plugin. If you are on 2024 and it works, or doesn't, that is worth a report.
What was actually verified before this release, on the author's single machine — everything else is untested, not known-broken:
| OS | Windows 11 Pro (build 26200) |
| GPU | NVIDIA RTX 4070 Ti, 12 GB VRAM |
| RAM | 31.7 GB |
| ComfyUI | 0.27.1 (frontend v1.45.20), launched with --disable-xformers --preview-method auto |
| Python | 3.10.11 |
| PyTorch | 2.6.0+cu124 |
| Photoshop | 2025, build 26.1.0 |
macOS has never been tested. The plugin has no Windows-specific code that is known about, but nobody has run it on a Mac — if you do, that report is genuinely valuable either way.
Automated CI covers pure TypeScript logic only. It does not run Photoshop, UXP, or ComfyUI, so everything host-facing in this release was checked by hand on the machine above.
Checksums (SHA-256)
Also attached as checksums.txt in sha256sum format.
2eee340f76e27fe321f6be8be9377c8b3229daad63613a49c8223337d85ee440 openlayer-v0.9.0-alpha.zip
d7e57b64a9d791a89c75914f533e5889f44d33b856412d2031f1092d8ca7d3de openlayer-comfyui-setup-0.9.0.zip
Verify on Windows PowerShell:
Get-FileHash openlayer-v0.9.0-alpha.zip -Algorithm SHA256
On macOS or Linux:
shasum -a 256 -c checksums.txt
What's new in v0.9.0-alpha
Adds the eighth tool, and finishes the status cleanup the 0.8 releases started. Layer Tools is the first thing OpenLayer does that is not a generation: it moves pixels out of Photoshop, into a file or into ComfyUI's input folder, which is the step that has until now meant leaving the panel.
Added
- Added Layer Tools, the Home card that has said "coming soon" since it was written. Three exports — the active layer, the current selection, the selection mask — each to two destinations: a file you pick with a real Photoshop save dialog, or straight into ComfyUI's input folder where a workflow can reference it by name. Photoshop can already export a layer as PNG; what it cannot do is put one where ComfyUI can see it, and the selection mask — the export that is genuinely awkward to produce by hand — is exactly what an inpainting workflow wants.
- The selection export uses the selection's own bounds, not the padded and snapped context bounds Inpaint uses. Inpaint pads because the model needs surrounding context; an artist exporting a selection wants what they selected.
- Send to ComfyUI reuses the same
/upload/imagecall every generation already makes, rather than new plumbing.
Changed
exportSelectionMaskin the Photoshop adapter had been fully implemented, working, and completely unreachable for several releases — no caller anywhere in the source. Layer Tools is its first caller. The two neighbouring functions,exportActiveLayerAsPNGandexportSelectionAsPNG, were stubs that threw, carrying TODOs that named v0.4 and v0.5; both are now implemented on the existing capture path.- Layer Tools is the first tool written to the per-tool module shape the project has been moving toward:
src/ui/tools/layerTools.tstakes its capture, save, upload, and message-formatting collaborators as parameters, so it contains no Photoshop, nofetch, and no DOM. The decisions worth arguing about — which capture runs, what the artist is told, what happens when they cancel — are unit-tested instead of being unreachable insiderenderApp. A cancelled save is treated as neither success nor error, because colouring a change of mind red is how red stops meaning anything. readActiveSelectionInfonow takes a label for the caller, so its no-selection message names what the artist was actually doing. It used to tell every caller to make a selection "before using Inpaint", including callers that had nothing to do with Inpaint.
Fixed
- Fixed one tool's diagnostics and error text appearing on the other tools' screens, the last part of the v0.7 status bleed.
setDiagnosticswrote all eight diagnostics lines andsetErrorwrote both the Text to Image and the Settings error line, because Text to Image owns the unprefixed elements from when it was the only tool in the panel — so "Generate pressed at 09:14:22.", "Seed used: 12345." and "Enter a prompt before generating." were broadcast to Inpaint, Upscale, Outpaint, Sketch to Image, Image to Image and Prompt from Layer. Each tool now writes its own diagnostics line plus the Settings line, which stays the panel-wide log, and keeps its errors to its own screen. Panel-wide diagnostics — the port scan, the GPU report, workflow health — report on Settings, where they are actionable. One visible consequence: each tool screen now keeps its opening hint ("Capture a Photoshop selection to prepare inpainting.") until that tool is actually used, instead of losing it to the first unrelated message.
Known limitations
- The Layer Tools card on Home does not dim when ComfyUI is unreachable, unlike the generation tools. Saving to a file works with ComfyUI stopped; Send to ComfyUI will fail and report the connection error on the Layer Tools status line.
- Layer, canvas, selection, and mask capture is limited to 16 megapixels (4096 x 4096) until a downscale option is added.
- The Preview panel offers each tool's primary import only. Live Painting's second action, "Import Refined as Layer", is not on the panel, because the refined result is a separate image and the panel shows one at a time.
- The setup pack contains no model weights. They are roughly 85 GB and two are licence-restricted, so it ships the list and the downloader instead — an internet connection is required.
- Inpaint and Outpaint remain experimental and should be tested on duplicate layers or disposable documents.
- CI covers pure TypeScript behavior but does not run Photoshop, UXP Developer Tool, or ComfyUI integration tests.