Skip to content

feat: full-screen embedded show UI, and speed + fade as the fixed master sliders - #120

Merged
pyramation merged 1 commit into
mainfrom
feat/embedded-show-fullscreen
Aug 19, 2026
Merged

feat: full-screen embedded show UI, and speed + fade as the fixed master sliders#120
pyramation merged 1 commit into
mainfrom
feat/embedded-show-fullscreen

Conversation

@pyramation

Copy link
Copy Markdown
Contributor

Summary

Two artist-facing complaints: the embedded show UI is a postage stamp inside the desktop panel, and the top bar's permanent sliders are the ones nobody touches mid-show.

Full screen. ShowRoute keeps an expanded flag; when set it renders fixed inset-0 with only a thin exit bar above the slot. Nothing about the embedded UI changes — it is a native WebContentsView that simply follows whatever bounds the renderer reports, so "full screen" is just a bigger rectangle:

-  }, [running, url, overlay]);
+  }, [running, url, overlay, expanded]);   // the slot moved; re-measure it

The subtlety is Escape. While the embedded UI fills the window it holds focus, so the renderer's keydown listener never fires — the keypress lands in the embedded web contents. laser-view intercepts it there and forwards it:

created.webContents.on('before-input-event', (_e, input) => {
  if (input.type === 'keyDown' && input.key === 'Escape') win.webContents.send('laser:escape');
});

surfaced as window.wavegridLaser.onEscape(handler) → unsubscribe. The exit button exists too, so there is a mouse way out even if that plumbing breaks.

Master sliders. The fixed slots become Speed and Fade; Bright and Attack move behind a disclosure (and remain in the phone's expandable panel unchanged). Speed is the same 0.01x–5x logarithmic control the tool panel already had, so slider entries now carry a display string rather than being assumed to be a 0–100 integer:

{ label: 'Speed', value: speedToPct(animSpeed), display: '1.0x', handler: (pct) => onAnimSpeed(pctToSpeed(pct)) }

It drives the existing handleAnimSpeed{ type: 'anim_speed' }, so it is the same value as the tool panel's Speed slider, not a second one.

Link to Devin session: https://app.devin.ai/sessions/ec43152136134467a853ec0bbf783ea9
Requested by: @pyramation

…r sliders

The show screen's embedded UI is the thing an artist actually works in, and
a windowed panel makes the grid a postage stamp: Full screen hands it the
whole window, with a thin bar (and Escape, forwarded from the embedded web
contents, which is what has focus) to get back out.

The top bar's fixed sliders become Speed and Fade — the two that get moved
mid-show — with brightness and attack behind a disclosure.
@pyramation pyramation self-assigned this Aug 19, 2026
@devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@pyramation
pyramation merged commit 7d7f699 into main Aug 19, 2026
5 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.

1 participant