Files
awesome-copilot/extensions/arcade-canvas
James Montemagno e370b97107 Fix canvas repo detection and shrink oversized preview images (#2227)
Canvas extensions (accessibility-kanban, where-was-i) resolved git state
against the extension's install directory or the session-state folder
instead of the repo the session was opened in. This broke repo/branch
detection for user-scoped installs and worktrees ("unknown/unknown",
"detached HEAD"). Both now read the active session's working directory
from the canvas request context on open and on each action, so they
follow whichever project/worktree opened them.

where-was-i also re-gathers context on open when the saved branch is
blank, so it never opens stuck on stale data.

Also compress oversized extension preview images (pngquant, with a mild
resize for the photographic arcade-canvas art) so every preview.png is
comfortably under the installer's inline-byte cap that was blocking
release-notes-showcase from installing.

Update release-notes-showcase author to Kayla Cinnamon.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-07-07 10:54:51 +10:00
..

Agent Arcade Canvas

A GitHub Copilot canvas that opens a retro arcade in the side panel. It serves the built Agent Arcade Phaser frontend and lets either the user or the agent switch between five mini-games.

Games

  • Alien Onslaught — Space Invaders-style arcade action with marching aliens, shields, and mystery ships.
  • Cosmic Rocks — Asteroids-style vector shooter with thrust physics and splitting asteroids.
  • Galaxy Blaster — Galaga-style space shooter with formation enemies, attack patterns, and dual-shot power-up.
  • Ninja Runner — Classic platformer with double jumps, power-ups, warp pipes, and enemies.
  • Planet Guardian — Defender-style side-scrolling shooter with humanoid rescues and six enemy types.

Files

  • extension.mjs — canvas declaration, loopback game server, static asset handling, and agent actions.
  • game/ — compiled Phaser game frontend served inside the canvas.
  • assets/ — game sprites, sounds, app icon, and preview.png for the extensions gallery.
  • package.json — declares the Copilot SDK dependency and ESM entry point.
  • copilot-extension.json — Copilot extension name/version metadata.
  • canvas.json — Awesome Copilot gallery metadata.

Prerequisites

  • Node.js 20.19 or newer because the Copilot SDK requires node ^20.19.0 || >=22.12.0.
  • The GitHub Copilot app canvas / UI-extensions experiment enabled.

Install

Drop this folder at ~/.copilot/extensions/arcade-canvas/ for user scope, or in a repository at .github/extensions/arcade-canvas/ for project scope. Then install dependencies from inside the copied folder:

# User scope
cd ~/.copilot/extensions/arcade-canvas

# Or project scope, from the repository root
cd .github/extensions/arcade-canvas

npm install

Reload extensions in the GitHub Copilot app, then open the arcade-canvas canvas. The canvas accepts an optional defaultGame input with one of these keys: cosmic-rocks, alien-onslaught, galaxy-blaster, ninja-runner, or defender.

Agent actions

  • list_games — list available mini-games and the currently selected game.
  • select_game { gameKey } — switch the open arcade canvas to a specific mini-game.
  • restart_game — reload the open arcade canvas to restart the current game.

Development

In the Agent Arcade repository, rebuild the committed canvas bundle after frontend or asset changes:

npm run build:canvas

That command builds the frontend, copies dist/game into game/, copies dist/assets into assets/, writes assets/preview.png for the Awesome Copilot gallery, and bundles assets/canvas-background.webp for the canvas-only space backdrop.

Credits