Skip to content

Commit 9e32c7c

Browse files
ochafikclaude
andcommitted
fix(shadertoy): button visibility after exiting fullscreen + Escape key
- Only update button visibility when availableDisplayModes is present in context (partial updates don't include all fields) - Add Escape key handler to exit fullscreen mode 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f669b56 commit 9e32c7c

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

examples/shadertoy-server/src/mcp-app.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,13 @@ window.addEventListener("resize", resizeCanvas);
5353
function handleHostContextChanged(ctx: McpUiHostContext) {
5454
// Note: We ignore safeAreaInsets to maximize shader display area
5555

56-
// Show fullscreen button if available
57-
if (ctx.availableDisplayModes?.includes("fullscreen")) {
58-
fullscreenBtn.classList.add("available");
59-
} else {
60-
fullscreenBtn.classList.remove("available");
56+
// Show fullscreen button if available (only update if field is present)
57+
if (ctx.availableDisplayModes !== undefined) {
58+
if (ctx.availableDisplayModes.includes("fullscreen")) {
59+
fullscreenBtn.classList.add("available");
60+
} else {
61+
fullscreenBtn.classList.remove("available");
62+
}
6163
}
6264

6365
// Update display mode state and UI
@@ -71,6 +73,13 @@ function handleHostContextChanged(ctx: McpUiHostContext) {
7173
}
7274
}
7375

76+
// Handle Escape key to exit fullscreen
77+
document.addEventListener("keydown", (e) => {
78+
if (e.key === "Escape" && currentDisplayMode === "fullscreen") {
79+
toggleFullscreen();
80+
}
81+
});
82+
7483
// Toggle fullscreen mode
7584
async function toggleFullscreen() {
7685
const newMode = currentDisplayMode === "fullscreen" ? "inline" : "fullscreen";

0 commit comments

Comments
 (0)