diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d3cafec..5bca024 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,7 +20,7 @@ jobs: - name: Setup Node uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 cache: npm - name: Install dependencies diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a05fa4..9a31c2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,35 @@ # Changelog +## v0.16.0-alpha - 2026-08-22 + +This release is mostly about the panel you look at while you work. There is a new dark theme built for artists rather than for matching Photoshop's chrome, the numeric parameters can be sliders now, the seed field has a dice button — and, underneath that button, a fix for a bug that has quietly been failing generations since long before the button existed. The one new generation capability is an inpaint preset for FLUX.2 Klein, so the fast Klein stack you may already have downloaded can now repaint a selection. + +### Added + +- **Artist-Friendly Dark, a third theme.** Offered in Settings alongside Compact Adobe Dark and Classic v0.4. It is a deeper, softer dark meant to sit behind artwork rather than blend into the Photoshop toolbar, and it is the theme that turns the numeric parameters into sliders. Compact Adobe Dark is deliberately untouched — every existing rule is byte-identical — so switching themes changes nothing about the panel you already know. + + The groundwork under it: the stylesheet's colours were extracted into tokens first, so a theme is now a small set of token overrides rather than a fork of the whole panel. Artist-Friendly Dark is forty overrides and nothing else. +- **Sliders for the numeric parameters, in Artist-Friendly Dark.** Detail (steps), Guidance (CFG), Strength (denoise), sketch influence and Live Painting strength become sliders; Compact Adobe Dark keeps the number boxes it always had. It is one control with two faces — the number input is still the single source of truth, and the slider writes through to it — so nothing about how a value is read or validated changed, and the labels keep the technical word searchable next to the artist one. +- **A dice button on the seed field**, on all five tools that have one. Press it to roll a fresh random seed instead of typing one. The die is drawn from the panel's own primitives rather than an icon font, for the same reason the rest of the panel is: Photoshop's UXP renders almost no embedded icon markup. +- **The Advanced settings disclosure remembers whether you left it open.** Each tool's parameter grid sits behind an "Advanced settings" toggle, and the panel used to re-collapse every one of them on reopen. Your choice is now remembered per screen — Text to Image expanded and Outpaint collapsed, if that is how you work — and stored separately from the generation defaults, so Reset Settings does not silently re-collapse a screen you chose to keep open. +- **FLUX.2 Klein inpainting: `inpaint-flux2-klein`.** The first inpaint preset that is not built on a Flux Fill model. It reuses the FLUX.2 Klein 4B stack you already have for Text to Image and Image to Image — no extra model download — and repaints a selection at four steps. Its only new requirement is the same `comfyui-inpaint-cropandstitch` node pack the crop-and-stitch Flux Fill preset uses, and it works the same way: it crops to your mask plus context, samples that at 1024, and stitches the patch back with a blended seam. + + It is marked experimental. It is strong at *adding* something to a small selection — the case where a naive masked sampler tends to repaint the surroundings and ignore you — and at replacing a large region. As with every inpaint preset, verify the result before relying on it. + +### Fixed + +- **The seed field mangled any wide seed to `214748.36`, and this failed generations.** A Photoshop UXP `` cannot hold a value above roughly 214748.36, so any seed wider than six digits — including every seed you loaded from session History, which are full-width server-side rolls — came back out as that one mangled string. Because a seed has to be a whole number, the run was then rejected outright with "Seed must be a whole number". This predates the dice button; `214748.36` is visible in the seed field in screenshots from before it existed. All five seed fields are now plain text fields that accept a numeric keypad, and hold the full range. +- **The progress bar glitched and rendered with a jagged edge.** Both are fixed, and a related round of interface tidying went with them — the prompt buttons no longer touch each other. + +### Changed + +- **The panel's colours now live in one set of tokens.** No visible change on its own; it is what made a real second theme possible without re-implementing the whole panel, and what any future theme will build on. + +### Known limitations + +- **`inpaint-flux2-klein` is experimental**, like the other inpaint presets. Its Krea2-Turbo sibling was evaluated and deliberately not shipped because it would not match the tone of the surrounding pixels reliably; Klein does. A Klein *outpaint* preset is still not shipped — the technique works in isolated tests but is not yet trusted through the panel. +- The slider faces and Artist-Friendly Dark are new; if a parameter reads differently between the slider and the number box, the number box is the truth. Please report it. + ## v0.15.0-alpha - 2026-08-19 OpenLayer's tools can be driven by an AI assistant now, not only by clicking the panel. Ask Claude — or Codex, or anything else that speaks the Model Context Protocol — to generate an image, upscale a layer or caption a selection, and it drives the panel's own buttons in your open Photoshop document. It runs entirely on your machine, and it is off until you turn it on. diff --git a/README.md b/README.md index 5570430..0573f17 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,18 @@ OpenLayer is an open-source Adobe Photoshop UXP plugin that connects Photoshop t ## Alpha Release -`v0.15.0-alpha` is the current public alpha checkpoint. It is intended for testing the core local workflows in Photoshop UXP, not for production work yet. +`v0.16.0-alpha` is the current public alpha checkpoint. It is intended for testing the core local workflows in Photoshop UXP, not for production work yet. -New in `v0.15.0-alpha`: +New in `v0.16.0-alpha`: + +- **Artist-Friendly Dark, a third theme.** A deeper, softer dark meant to sit behind artwork rather than match the Photoshop toolbar, offered in Settings alongside Compact Adobe Dark and Classic v0.4. It is the theme that turns the numeric parameters into sliders. Compact Adobe Dark is untouched — switching themes changes nothing about the panel you already know. +- **Sliders for the numeric parameters, in Artist-Friendly Dark.** Detail (steps), Guidance (CFG), Strength (denoise) and the others become sliders; Compact Adobe Dark keeps its number boxes. One control, two faces — the number input is still the source of truth and the slider writes through to it, so nothing about how a value is read or validated changed. +- **A dice button on the seed field**, on every tool that has one — roll a fresh random seed instead of typing one. +- **The Advanced settings disclosure remembers whether you left it open**, per screen, stored separately from the generation defaults so Reset Settings does not re-collapse a screen you chose to keep open. +- **FLUX.2 Klein inpainting: `inpaint-flux2-klein`.** The first inpaint preset that is not a Flux Fill model. It reuses the Klein 4B stack you already have for Text to Image — no extra model download — and repaints a selection at four steps, using the same `comfyui-inpaint-cropandstitch` node pack as the crop-and-stitch Flux Fill preset. Experimental; strongest at adding to a small selection or replacing a large region. +- **The seed field no longer mangles wide seeds to `214748.36`.** A UXP number input cannot hold a value that large, so any seed wider than six digits — including every seed loaded from History — came back mangled and then failed the run with "Seed must be a whole number". The seed fields are plain numeric text fields now and hold the full range. + +Also new in `v0.15.0-alpha`: - **An AI assistant can drive OpenLayer's tools.** Ask Claude — or Codex, or anything else that speaks the Model Context Protocol — to generate an image, upscale a layer or caption a selection, and it works the panel's own buttons in your open document. All seven tools are reachable. It runs entirely on your machine and is **off until you turn it on**, in Setup → Agent Bridge. @@ -134,13 +143,21 @@ The earlier card-based dashboard established OpenLayer's honest available/experi -v0.15.0-alpha tester focus: +v0.16.0-alpha tester focus: + +- **Confirm the panel footer reads `v0.16.0`.** It read the wrong version for the whole of v0.14.0-alpha, so this is worth a glance before anything else. +- **Switch to Artist-Friendly Dark** in Settings. The panel should restyle into the softer dark theme. Switch back to Compact Adobe Dark and confirm it looks exactly as it did before — nothing about it should have changed. +- **In Artist-Friendly Dark, confirm the numeric parameters are sliders.** Drag Detail (steps) or Strength (denoise), confirm the number updates, and generate — the value the slider shows must be the value used. In Compact Adobe Dark the same parameters must still be number boxes. +- **Press the dice button on a seed field.** Each press should roll a different seed, and the field must never show `214748.36`. Then **load an entry from session History and generate from it** — its seed must load and run, not fail with "Seed must be a whole number". That failure hit every History load before this release. +- **Expand Advanced settings on one tool, collapse it on another, and reopen the panel.** Each screen must remember what you left it as. Then Reset Settings — it must not re-collapse a screen you chose to keep open. +- **Open Inpaint, make a selection, switch to `inpaint-flux2-klein`, and generate.** Confirm the repaint blends into the surrounding image. It is strongest at *adding* something to a small selection — try that, and try replacing a larger region. It needs the `comfyui-inpaint-cropandstitch` node pack; if it is missing, Workflow Health should name it. + +Also worth rechecking from `v0.15.0-alpha`: - **Generate with `txt2img-flux2-klein`.** It should complete in under 15 seconds on a 4070 Ti at 1024x1024. Confirm the result is coherent and the prompt was followed. - **Open Image to Image, switch to `img2img-flux2-klein`, capture a layer, and generate.** The result should follow your layer. Then switch to `edit-flux2-klein`, enter a change instruction ("make the sky orange"), and generate again — the edit should apply the instruction while keeping the rest of the scene. - **Open Inpaint, make a selection, and switch to `inpaint-flux-fill-cropstitch`.** Generate and confirm the inpainted area blends into the surrounding image. Compare with `inpaint-flux-fill-basic` at the same selection — crop-and-stitch should produce sharper detail on small selections in large documents. - **Generate an Image to Image result from a layer that is not at the canvas origin**, then import it. The imported layer must land where the source layer was, not centred on the canvas. -- **Confirm the panel footer reads `v0.15.0`.** It read the wrong version for the whole of v0.14.0-alpha, so this is worth a glance before anything else. - **Confirm ordinary use is unaffected if you never turn the Agent Bridge on.** Text to Image gains one new button, "Ask the Agent for a Prompt" — clicking it with the bridge off should show a clear "not connected" status, not an error or a broken panel. Everything else should behave exactly as it did in v0.14. This is the most important check in the list: everything below is opt-in. - Open **Setup** and find the **Agent Bridge** section at the bottom. With nothing running, press **Turn Agent Bridge On** — it must report that no bridge is listening and tell you how to start one, not hang or claim to be connected. - Start the hub (`cd bridge && npm install && npm run hub`), then turn the toggle on. It should connect **without any AI client running at all** — the hub is independent of them. @@ -196,7 +213,7 @@ Also worth rechecking from v0.9.0-alpha: - Run `npm run setup-pack` and confirm it reports no source/API mismatches at all. - Recheck the existing local generation, cancel, preview, import, History, and Workflow Health paths for regressions. -Known v0.15.0-alpha boundaries: +Known v0.16.0-alpha boundaries: - **The Agent Bridge is not in the `.ccx`/`.zip` download.** A Photoshop plugin package cannot install or start a Node program, so it lives in the repository — see `bridge/README.md`. It is off by default in the panel either way. "Ask the Agent for a Prompt" additionally depends on your AI client supporting MCP *sampling*, which is optional in the protocol; a client that does not offer it gets a clear, instant refusal rather than the button working. - **The Setup screen downloads missing models, but not custom nodes.** A missing model's row offers **Download** beside Copy Link, and OpenLayer fetches the file from the URL the registry pins — in resumable 8 MiB chunks, one model at a time, and never before a confirmation naming the size, the destination folder and the download host. What it will not do is unchanged and deliberate: licence-gated weights are never fetched anonymously, because an unauthenticated request saves an HTML sign-in page under the model's filename; a model already on disk in the wrong folder asks you to move it rather than downloading a second copy; and an entry published as a repository folder rather than a single file points you at the model page. Custom node packages keep Copy Link and go through ComfyUI-Manager. Full reasoning in the CHANGELOG. @@ -371,10 +388,10 @@ npm run package This creates a zip package from `dist` in the `packages` folder. For the current alpha, the expected package name is: ```text -packages/openlayer-v0.15.0-alpha.zip +packages/openlayer-v0.16.0-alpha.zip ``` -`npm run package` also writes `packages/openlayer-v0.15.0-alpha.ccx` beside it, from the same files. +`npm run package` also writes `packages/openlayer-v0.16.0-alpha.ccx` beside it, from the same files. ## One-click install (verified 2026-08-03) @@ -539,7 +556,7 @@ Inpaint output quality, mask interpretation, and Photoshop alignment are still b ## Pre-release Tester Checklist -Use this quick pass before reporting a v0.15.0-alpha test result: +Use this quick pass before reporting a v0.16.0-alpha test result: 1. Start ComfyUI on `http://127.0.0.1:8190`. 2. Build OpenLayer and load `dist/manifest.json` in Adobe UXP Developer Tool. diff --git a/bridge/package-lock.json b/bridge/package-lock.json index 5a1d6a9..5ee0a7f 100644 --- a/bridge/package-lock.json +++ b/bridge/package-lock.json @@ -1,12 +1,12 @@ { "name": "openlayer-mcp-bridge", - "version": "0.15.0", + "version": "0.16.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "openlayer-mcp-bridge", - "version": "0.15.0", + "version": "0.16.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", diff --git a/bridge/package.json b/bridge/package.json index 255b8c5..840ba58 100644 --- a/bridge/package.json +++ b/bridge/package.json @@ -1,6 +1,6 @@ { "name": "openlayer-mcp-bridge", - "version": "0.15.0", + "version": "0.16.0", "private": true, "description": "Lets an MCP client drive the OpenLayer Photoshop panel's existing tools", "license": "MIT", diff --git a/docs/become-a-tester.html b/docs/become-a-tester.html index 65def78..59c73f3 100644 --- a/docs/become-a-tester.html +++ b/docs/become-a-tester.html @@ -44,7 +44,7 @@
-

Alpha v0.15.0 · testers wanted

+

Alpha v0.16.0 · testers wanted

Five minutes to
your first AI layer.

OpenLayer is an alpha. It works on the author's machine, and that is exactly the problem — @@ -53,7 +53,7 @@

Five minutes to
your first AI layer.
    @@ -93,8 +93,8 @@

    Install, connect, generate, import, report.

    1

    Install OpenLayer

    -

    Download openlayer-v0.15.0-alpha.ccx from the release and double-click it. Creative Cloud installs the panel — no developer tool, nothing to unzip. Creative Cloud will warn that the plugin is not verified by Adobe, because it is not from Adobe Exchange; that prompt is expected. Keep the file on the same drive as Photoshop. Then open Photoshop: Plugins > OpenLayer.

    -

    If double-clicking does nothing at all — a known Windows 11 quirk — the release also has openlayer-v0.15.0-alpha.zip, which loads through the UXP Developer Tool: Add Plugin, select the unzipped manifest.json, then Load. And if that is what you had to do, please say so in your report — the one-click path has only ever been verified on Windows 11 with Photoshop 2025.

    +

    Download openlayer-v0.16.0-alpha.ccx from the release and double-click it. Creative Cloud installs the panel — no developer tool, nothing to unzip. Creative Cloud will warn that the plugin is not verified by Adobe, because it is not from Adobe Exchange; that prompt is expected. Keep the file on the same drive as Photoshop. Then open Photoshop: Plugins > OpenLayer.

    +

    If double-clicking does nothing at all — a known Windows 11 quirk — the release also has openlayer-v0.16.0-alpha.zip, which loads through the UXP Developer Tool: Add Plugin, select the unzipped manifest.json, then Load. And if that is what you had to do, please say so in your report — the one-click path has only ever been verified on Windows 11 with Photoshop 2025.

@@ -202,7 +202,7 @@

Ready?