Skip to content

fix(ai-studio): live execution progress behind buffering proxies + visualize copy feedback#62

Merged
librowski merged 4 commits into
mainfrom
fix/ai-studio-sse-and-copy
Jul 3, 2026
Merged

fix(ai-studio): live execution progress behind buffering proxies + visualize copy feedback#62
librowski merged 4 commits into
mainfrom
fix/ai-studio-sse-and-copy

Conversation

@librowski

Copy link
Copy Markdown
Collaborator

Two follow-up fixes to #48.

Live execution feedback (SSE buffering)

On the deployed demo, node highlighting and the execution log stayed empty during a run and everything appeared at once when it finished. Measured cause: a proxy hop in front of the stack buffers the SSE response and flushes it only at stream close - the frontend receives every event in a single burst after the run completes. Locally (no proxy) the same build streams progressively.

  • backend sends X-Accel-Buffering: no on /api/executions/:id/stream
  • the deploy nginx re-emits that header on the SSE location: nginx hides upstream X-Accel-* headers by default, so without the re-emit a TLS-terminating proxy in front of the web container would never see it

Needs a backend + web redeploy to take effect.

Visualize copy buttons

Copying worked but gave zero feedback, so it looked broken.

  • Copy image (card + modal) now shows a checkmark for 1.5s after a successful copy and is disabled while AI adaptation is in flight (its capture target is not mounted then, so clicking was a silent no-op)
  • Copy source is removed from both the card and the modal, along with the now-unused copySource util
  • new CopyImageButton component with a spec covering feedback, the download fallback, and the missing-target case

A fronting proxy that buffers the stream delivers every event in one
burst at stream close, so live node progress renders only after the
run finishes. Send X-Accel-Buffering: no from the route and re-emit it
from the deploy nginx (nginx hides upstream X-Accel-* headers), so a
TLS-terminating proxy in front of the stack sees it too.
The visualize copy buttons gave no feedback at all, so a successful
copy looked broken. Copy image now flips to a checkmark for 1.5s and
is disabled while AI adaptation is in flight (its target element does
not exist yet, so clicking was a silent no-op). Copy source is removed
from both the card and the modal.
One clipboard entry with both image/png and text/plain: pasting yields
the image where images are accepted and the raw result text in
text-only fields. Copying only the image looked broken when pasted
into a text field.
Palette drops get mode: 'auto' from defaultPropertiesData, but the
hand-authored template nodes omitted it, so their Render as select
showed an empty value.
@librowski librowski merged commit 266f981 into main Jul 3, 2026
2 checks passed
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.

4 participants