Skip to content

Add Canvas Extensions website page#1900

Merged
aaronpowell merged 1 commit into
stagedfrom
canvas
Jun 2, 2026
Merged

Add Canvas Extensions website page#1900
aaronpowell merged 1 commit into
stagedfrom
canvas

Conversation

@aaronpowell
Copy link
Copy Markdown
Contributor

Generate extensions data, add the extensions listing route/navigation, and include install URL copy actions pinned to the build commit SHA.

Pull Request Checklist

  • I have read and followed the CONTRIBUTING.md guidelines.
  • I have read and followed the Guidance for submissions involving paid services.
  • My contribution adds a new instruction, prompt, agent, skill, or workflow file in the correct directory.
  • The file follows the required naming convention.
  • The content is clearly structured and follows the example format.
  • I have tested my instructions, prompt, agent, skill, or workflow with GitHub Copilot.
  • I have run npm start and verified that README.md is up to date.
  • I am targeting the staged branch for this pull request.

Description


Type of Contribution

  • New instruction file.
  • New prompt file.
  • New agent file.
  • New plugin.
  • New skill file.
  • New agentic workflow.
  • Update to existing instruction, prompt, agent, plugin, skill, or workflow.
  • Other (please specify):

Additional Notes


By submitting this pull request, I confirm that my contribution abides by the Code of Conduct and will be licensed under the MIT License.

Generate extensions data, add the extensions listing route/navigation, and include install URL copy actions pinned to the build commit SHA.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 2, 2026 18:03
@github-actions github-actions Bot added new-submission PR adds at least one new contribution website-update PR touches website content or code labels Jun 2, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds first-class “Canvas Extensions” support to the Awesome Copilot website by generating a new extensions.json dataset, wiring it into the homepage + sidebar navigation, and introducing multiple example extensions under extensions/ that can be listed and linked to from the site.

Changes:

  • Generate and publish website/public/data/extensions.json, plus manifest counts, from the top-level extensions/ directory.
  • Add /extensions/ website route + homepage card + sidebar nav entry, including “copy install URL” actions.
  • Add several canvas extension implementations (and associated assets) under extensions/.
Show a summary per file
File Description
website/src/scripts/pages/index.ts Adds extensions to homepage manifest counts rendering.
website/src/scripts/pages/extensions.ts Implements client-side behavior for the extensions listing page (sorting + copy install URL).
website/src/scripts/pages/extensions-render.ts Renders extensions list HTML and constructs install/GitHub links.
website/src/pages/index.astro Adds homepage card linking to the new Canvas Extensions page.
website/src/pages/extensions.astro Adds the Canvas Extensions listing route/page.
website/astro.config.mjs Adds “Canvas Extensions” to the Starlight sidebar nav.
extensions/where-was-i/extension.mjs Adds “where-was-i” canvas extension (context reconstruction).
extensions/gesture-review/package.json Declares package metadata/deps for the gesture-review extension.
extensions/gesture-review/package-lock.json Locks dependencies for the gesture-review extension.
extensions/gesture-review/extension.mjs Adds gesture-based PR review canvas extension implementation.
extensions/feedback-themes/public/index.html Adds the UI for the feedback-themes extension.
extensions/feedback-themes/package.json Declares package metadata/deps for the feedback-themes extension.
extensions/feedback-themes/package-lock.json Locks dependencies for the feedback-themes extension.
extensions/feedback-themes/extension.mjs Adds the feedback-themes extension server/canvas logic.
extensions/feedback-themes/data/signals.json Adds fixture data used by the feedback-themes extension.
extensions/diagram-viewer/public/index.html Adds the UI for the diagram-viewer extension.
extensions/diagram-viewer/package.json Declares package metadata/deps for the diagram-viewer extension.
extensions/diagram-viewer/package-lock.json Locks dependencies for the diagram-viewer extension.
extensions/diagram-viewer/extension.mjs Adds the diagram-viewer extension server/canvas logic.
extensions/color-orb/package.json Declares package metadata/deps for the color-orb extension.
extensions/color-orb/package-lock.json Locks dependencies for the color-orb extension.
extensions/color-orb/extension.mjs Adds the color-orb extension implementation.
extensions/accessibility-kanban/public/index.html Adds the UI for the accessibility-kanban extension.
extensions/accessibility-kanban/package.json Declares package metadata/deps for the accessibility-kanban extension.
extensions/accessibility-kanban/extension.mjs Adds the accessibility-kanban extension server/canvas logic.
eng/generate-website-data.mjs Adds extensions data generation + manifest updates + commit SHA pinning.
eng/constants.mjs Exposes EXTENSIONS_DIR constant for generators/validators.

Copilot's findings

Files not reviewed (4)
  • extensions/color-orb/package-lock.json: Language not supported
  • extensions/diagram-viewer/package-lock.json: Language not supported
  • extensions/feedback-themes/package-lock.json: Language not supported
  • extensions/gesture-review/package-lock.json: Language not supported
  • Files reviewed: 23/27 changed files
  • Comments generated: 8

Comment on lines +123 to +129
function getCurrentCommitSha() {
return execSync("git --no-pager rev-parse HEAD", {
cwd: ROOT_FOLDER,
encoding: "utf8",
stdio: ["pipe", "pipe", "pipe"],
}).trim();
}
Comment on lines +64 to +66
<a href="${getGitHubUrl(
item.path
)}" class="btn btn-secondary btn-small" target="_blank" rel="noopener noreferrer" title="View on GitHub">GitHub</a>
Comment on lines +120 to +134
if (req.method === "POST" && req.url === "/select-pr") {
let body = "";
req.on("data", (chunk) => (body += chunk));
req.on("end", () => {
const { number } = JSON.parse(body);
const pr = prList.find((p) => p.number === number);
if (pr) {
currentPR = pr;
gestureState = "idle";
broadcast("pr", currentPR);
broadcast("state", { state: "idle" });
}
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ ok: true }));
});
Comment on lines +138 to +156
if (req.method === "POST" && req.url === "/gesture-decision") {
let body = "";
req.on("data", (chunk) => (body += chunk));
req.on("end", () => {
const { decision } = JSON.parse(body);
gestureState = decision; // "approved" or "rejected"
lastDecision = { decision, pr: currentPR, timestamp: Date.now() };
broadcast("state", { state: gestureState });

if (session && currentPR) {
const action = decision === "approved" ? "approve" : "reject";
session.send({
prompt: `The user gave a thumbs ${decision === "approved" ? "up" : "down"} gesture to ${action} PR #${currentPR.number} ("${currentPR.title}" by ${currentPR.author}). Please ${action} this pull request accordingly.`,
});
}

res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ ok: true, decision }));
});
Comment on lines +6 to +8
"dependencies": {
"@github/copilot-sdk": "latest"
}
Comment thread website/astro.config.mjs
Comment on lines 56 to 61
{ label: "Instructions", link: "/instructions/" },
{ label: "Skills", link: "/skills/" },
{ label: "Hooks", link: "/hooks/" },
{ label: "Workflows", link: "/workflows/" },
{ label: "Canvas Extensions", link: "/extensions/" },
{ label: "Plugins", link: "/plugins/" },
Comment on lines +640 to +645
`Help me pick up where I left off. What should I focus on first?`;
}

try { await sessionRef.send(prompt); } catch {}
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ ok: true }));
Comment on lines +706 to +712
prompt = `I was working on ${thread} and got interrupted. Context: branch=${data.branch}, recent commits: ${(data.recentCommits || []).join("; ")}. Help me resume.`;
} else {
prompt = `Help me resume. Branch: ${data.branch}. Commits: ${(data.recentCommits || []).join("; ")}. Uncommitted: ${(data.uncommitted || []).join("; ")}.`;
}
if (sessionRef) await sessionRef.send(prompt);
return { sent: true };
},
@aaronpowell aaronpowell merged commit 36cdc52 into staged Jun 2, 2026
11 checks passed
@aaronpowell aaronpowell deleted the canvas branch June 2, 2026 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-submission PR adds at least one new contribution website-update PR touches website content or code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants